0

通过以下使用 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
4

3 回答 3

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不会更新该值。

于 2013-03-05T16:23:04.417 回答
0

粗略一看,您可能会在这里遇到两个突出的问题。

-字符串比较区分大小写,您正在搜索大写字母,而它可能包含小写字母。尝试在 where 子句中的列周围放置一个 UPPER。

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

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

于 2013-03-05T16:20:26.200 回答
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')
于 2013-03-05T16:20:58.237 回答