如何查找子字符串并将其删除以及后面的所有内容

时间:2013-09-23 19:52:16

标签: tsql

我一直在寻找更新某个表的某些列的方法。

此更新将尝试来查找某个子字符串并将其删除,以及其后的所有其他字符。

在某个字符之后删除每个人很容易,但我找不到用子字符串做同样事情的方法。

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

考虑到:

  • 要更新的列名为haystack
  • 要搜索的子字符串称为@needle

以下是您正在寻找的表达方式:

case
 when charindex(@needle, haystack) = 0 then @haystack
 else substring(haystack, 1, charindex(@needle, haystack) - 1)
end

以下是两种情况的在线测试(匹配/不匹配):http://www.sqlfiddle.com/#!3/d41d8/21209

答案 1 :(得分:0)

DECLARE
    @substring varchar(32) = 'anySubString'
UPDATE
    myTable
SET
    colomnName = 
        (CASE WHEN charindex(@substring, colomnName) = 0 THEN
            colomnName
        ELSE
            substring(colomnName , 1, charindex(@substring, colomnName) - 1)
        END)
END
相关问题