以Remove part of string in table为例,我想用不同的字符串更改数据库列中的部分字符串。
例如:
数据库说E:\websites\nas\globe.png
,E:\websites\nas\apple.png
等
我希望它说\\nas\globe.png
,\\nas\apple.png
,
只有我要替换的部分是E:\websites\
而不是字符串的其余部分
我该怎么做?
到目前为止,我有:
SELECT file_name,
REPLACE(file_name,'E:\websites\','\\nas\')
FROM t_class;
并使用:
SELECT REPLACE('E:\websites\web\Class\Main_Image\','E:\websites\web\Class\Main_Image\','\\nas\class_s\Main_Image\') "Changes"
FROM DUAL;
但是再一次它不会改变O.o
答案 0 :(得分:1)
在Oracle中,您可能需要加倍反斜杠:
SELECT file_name,
REPLACE(file_name,'E:\\websites\\', '\\\\nas\\')
FROM t_class;
答案 1 :(得分:1)
为了好玩,使用regexp_replace
:
SQL> with tbl(filename) as (
2 select 'E:\websites\nas\globe.png' from dual
3 union
4 select 'E:\websites\nas\apple.png' from dual
5 )
6 select filename, regexp_replace(filename, 'E:\\websites', '\\') edited
7 from tbl;
FILENAME EDITED
------------------------- --------------------
E:\websites\nas\apple.png \\nas\apple.png
E:\websites\nas\globe.png \\nas\globe.png
SQL>
答案 2 :(得分:1)
我在how to replace string values of column values by SQL Stored Procedure
找到了一个引用执行以下操作:
choices = [
(1, _("1 thing")),
(2, _("2 things")),
(3, _("3 things")),
]
所以唯一的区别是UPDATE t_class SET file_name =
REPLACE
(file_name, 'E:\websites\web\Class\Main_Image\No_Image_Available.png', '\\nas\class_s\Main_Image\No_Image_Available.png');
和update
符号