Oracle SQL查找和替换

时间:2014-08-29 07:52:01

标签: sql oracle

表格中有很多行,字符串中隐藏着错误的条形码。

我需要对这些进行更新以用fd>替换任何内容;隐藏在字符串中的fd&gt ;; 1。

但这一行可能有类似

的内容

^ XA ^ XFB:trgt001.zpl ^ FS ^ FN2 ^ FDLondon Oxford ^ FS ^ FN4 ^ FD ^ FS ^ FN6 ^ FDLONDON ^ FS ^ FN8 ^ FDW1C 1DN ^ FS ^ FN100 ^ FD&gt ;; 110032730214 ^ FS ^ FN1 ^ FDSH

所以我基本上只在字符串中插入一个额外的1,只要有FD&gt ;;

请问这可能吗?

3 个答案:

答案 0 :(得分:0)

使用REPLACE功能。

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

请注意,此函数(通常与字符串一样)区分大小写,因此它将替换'FD>;'但不会替换'fd>;'。如果你也想这样做,你可以进行多次替换。

答案 1 :(得分:0)

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

答案 2 :(得分: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;