SQL基于加入匹配删除分隔字段的一部分?

时间:2016-06-22 21:57:45

标签: sql sql-server

在我开始这个步骤之前可能有一个更好的方法,但有一种简单的方法可以在一个字段上匹配,如果匹配则从第二个字段中的字符串中删除部分匹配。

表示例

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。

2 个答案:

答案 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+';%'