通过以下使用 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
通过以下使用 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
您可以使用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%';
LIKE
这将使用您的值更新与 中的条件匹配的任何行。如果没有,则alpha
不会更新该值。
粗略一看,您可能会在这里遇到两个突出的问题。
-字符串比较区分大小写,您正在搜索大写字母,而它可能包含小写字母。尝试在 where 子句中的列周围放置一个 UPPER。
-其次,您似乎正在搜索不以 ABC 开头的 ABC 字符串。在这种情况下,您应该使用 '%ABC%' 作为 where 子句。
为了获得更好的输入,您应该提供有关您的问题的更多信息。
通过阅读您的评论:
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')