2014-08-29 123 views
-4

我在表中有很多行,并且字符串中隐藏了不正确的条形码。Oracle SQL查找并替换

我需要对这些进行更新以替换fd>;隐藏在fd>的字符串中; 1。

但这一行可能有一些像

^^ XA XFB:trgt001.zpl^^ FS^FN2牛津FDLondon^^ FS^FN4 FD^^ FS^FN6^FDLONDON FS^^ FN8 FDW1C 1DN^FS^FN100^FD>; 110032730214^FS^FN1^FDSH

所以,我基本上只是插入一个额外的1到字符串中的任何地方有一个FD>;

请问这可能吗?

+0

和你有什么企图 – Frazz 2014-08-29 07:55:09

+0

我能想到的?尝试设置数据,如'%FD>; 1%数据类似'%FD>;%'',但这并不起作用 – Dorbs 2014-08-29 07:58:21

+0

任何运气,但有任何答案? – GolezTrol 2014-09-06 09:17:01

回答

0
UPDATE YOUR_TABLE t 
SET T.COLUMN = REPLACE(T.COLUMN, 'FD>;', 'FD>;1') 
0

使用REPLACE功能。

update YourTable t 
set 
    t.Barcode = replace(t.Barcode, 'FD>;', 'FD>;1') 

注意这个函数(如在普通字符串)是大小写敏感的,所以它会取代'FD>;'但不'fd>;'。如果你也想这样做,你可以进行多次替换。

0

你可以使用REGEXP_REPLACE做一个不区分大小写的替代太(以下字符串有不同的工况组合“FD;>”:

with data as 
(select '^XA^XFB:trgt001.zpl^FS^FN2^FDLondon Oxford ^FS^FN4^FD^FS^FN6^FDLONDON^FS^FN8^FDW1C 1DN^FS^FN100^FD>;110032730214^FS^FN1^FDSH' string from dual 
    union 
    select '^XA^XFB:trgt001.zpl^FS^FN2^FDLondon Oxford ^FS^FN4^FD^FS^FN6^FDLONDON^FS^FN8^FDW1C 1DN^FS^FN100^fD>;110032730214^FS^FN1^FDSH' string from dual 
    union 
    select '^XA^XFB:trgt001.zpl^FS^FN2^FDLondon Oxford ^FS^FN4^FD^FS^FN6^FDLONDON^FS^FN8^FDW1C 1DN^FS^FN100^fd>;110032730214^FS^FN1^FDSH' string from dual 
    union 
    select '^XA^XFB:trgt001.zpl^FS^FN2^FDLondon Oxford ^FS^FN4^FD^FS^FN6^FDLONDON^FS^FN8^FDW1C 1DN^FS^FN100^Fd>;110032730214^FS^FN1^FDSH' string from dual 
) 
select regexp_replace(string, 'FD>;', 'FD>;1', 1, 0, 'i') from data;