在T-SQL中查询LIKE

时间:2013-03-05 16:11:20

标签: sql sql-server tsql wildcard where

我没有使用以下使用LIKE的查询获得所需的结果。我可以使用WHERE子句吗?

UPDATE TABLE
SET ALPHA = 'ABC'
WHERE ALPHA LIKE 'ABC%' 

UPDATE TABLE
SET ALPHA = 'ABCCC' 
WHERE ALPHA LIKE ‘ABCC%'


Bt90Abc Abc
bt91Abc Abc
bt19abcCC      ABCCC
bt16abcSTAT ABC

3 个答案:

答案 0 :(得分:1)

您可以使用CASE语句执行更新:

update yourtable 
set alpha = case 
              when alpha like '%abcc%' then 'ABCC'
              when alpha like '%abc%' then 'ABC'
              else alpha
            end
where alpha like '%abc%';

请参阅SQL Fiddle with Demo

这将使用您的值更新符合LIKE条件的所有行。如果没有,则alpha值不会更新。

答案 1 :(得分:0)

从粗略的一瞥看来,你可能会遇到两个突出的问题。

- 字符串比较区分大小写,您正在搜索大写字母,而它可能包含小写字母。尝试在where子句中围绕列抛出UPPER。

- 其次,您似乎正在搜索不以ABC开头的ABC字符串。在这种情况下,你应该使用'%ABC%'作为你的where子句。

为了获得更好的输入,您应该提供有关您的问题的更多信息。

答案 2 :(得分:0)

阅读你的评论:

UPDATE TABLE
SET ALPHA = CASE WHEN ALPHA IN ('bt90abc','bt91abc') THEN 'ABC' 
                 WHEN ALPHA IN ('bt19abc')  THEN 'ABCCC'
            ELSE ALPHA END
WHERE ALPHA IN ('bt90abc','bt91abc','bt19abc')