替换表列中的部分字符串

时间:2015-08-05 18:49:32

标签: sql string replace oracle10g

Remove part of string in table为例,我想用不同的字符串更改数据库列中的部分字符串。

例如:

数据库说E:\websites\nas\globe.pngE:\websites\nas\apple.png

我希望它说\\nas\globe.png\\nas\apple.png

只有我要替换的部分是E:\websites\而不是字符串的其余部分

我该怎么做?

到目前为止,我有:

SELECT file_name,  
REPLACE(file_name,'E:\websites\','\\nas\')   
FROM t_class;

我刚引用了http://nntp-archive.sybase.com/nntp-archive/action/article/%3C348_1744DC78C1045E920059DE7F85256A8B.0037D71C85256A8B@webforums%3E

并使用:

SELECT REPLACE('E:\websites\web\Class\Main_Image\','E:\websites\web\Class\Main_Image\','\\nas\class_s\Main_Image\') "Changes" 
FROM DUAL;

但是再一次它不会改变O.o

3 个答案:

答案 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符号