4

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

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

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

谢谢您的帮助

4

2 回答 2

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

于 2013-09-23T19:59:25.813 回答
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
于 2013-09-24T03:00:43.443 回答