在我开始这个步骤之前可能有一个更好的方法,但有一种简单的方法可以在一个字段上匹配,如果匹配则从第二个字段中的字符串中删除部分匹配。
表示例
ID | ID LIST
-----|---------
ID07 |ID05;ID06;ID07;ID08
这只是一个记录示例,因此ID和ID LIST会有所不同。 我正在寻找加入和更新/替换“无”或者可能添加一个值以便稍后删除。
Result I'm looking for
ID | ID LIST
-----|---------
ID07 |ID05;ID06;ID08
有没有简单的方法可以做到这一点,还是我应该采取另一种方式?我知道有些人会使用WHERE IN,但ID会有所不同。也许在那个字段名称中。我对此概念化有点困惑。
我正在使用SQL Server MGMT studio。
答案 0 :(得分:0)
你可以使用替换函数..如果id在id_list中被替换为空字符串
select replace(ID_LIST, ID +';', '')
from your_table;
答案 1 :(得分:0)
UPDATE TABLE
SET ID_LIST = CASE WHEN ID_LIST = ID THEN ''
WHEN ID_LIST LIKE ID + ';%' THEN SUBSTRING(ID_LIST, LEN(ID)+1, LEN(ID_LIST)-LEN(ID)-1)
WHEN ID_LIST LIKE '%;' + ID THEN LEFT(ID_LIST, LEN(ID_LIST)-LEN(ID)-1)
ELSE REPLACE(ID_LIST, ';'+ID+';', ';')
END
WHERE ';'+ID_LIST+';' LIKE '%;'+ID+';%'