使用模式删除部分字符串的SQL语句

时间:2014-12-10 10:55:52

标签: sql

我有一个带有分号分隔值的表格列,如下所示:

table1.ID | table1.column1 
-----------------------------------------------------
   1      | test1=aaa;test2=bbb;test3=ccc;
   2      | test1=akkaa;test2=bkjkjb;test3=cckjklc;
   3      | test1=ajaa;test2=bjhjbb;test3=sss;

我需要移除所有test2=xxxx,其中xxxx可以是任何值。

我启动了以下需要完成的查询;我如何指定给定的模式/表达式?

UPDATE table1
SET column1 = Replace(column1, 'test2=', '')
WHERE column1  Is Not Null;

提前致谢

2 个答案:

答案 0 :(得分:1)

对于MSSQL:

尝试此查询:(我没有使用任何模式[我不知道可能]。我所做的是替换test2 =的字符串内容;使用空字符串.CharIndex函数是用于定位Test2和test3位置。)

 UPDATE table1 SET Column1  = 
      REPLACE(Column1, substring(Column1, CharIndex('test2=', Column1), 
           (CharIndex( 'test3=', Column1) - CharIndex('test2=', Column1))), '')

--Live Demo Here

答案 1 :(得分:0)

for oracle:

update table1
set column1=substr(table1.column1,1,instr(table1.column1,';',1,1)-1)||substr(table1.column1,instr(table1.column1,';',1,2));
commit;