如何比较update语句中的两个字符串

时间:2015-01-09 17:20:32

标签: sql oracle wildcard

我希望在update语句中比较两个字符串字段。如果存在文本匹配,则语句将字段更新为1,否则更新为0。问题是说BLPU_TEXT是' 55'然后BLPU_PAO_SAO是' XX55XXX'它返回0.但如果有任何匹配,我希望它返回1.

UPDATE NAG_ANALYSIS.AA3_ALL N
SET N.CARTO_BLPU_BLPU_MATCH = 
(CASE WHEN N.BLPU_TEXT LIKE '%'||N.BLPU_PAO_SAO||'%' 
THEN 1 ELSE 0 END);

非常感谢你的时间

1 个答案:

答案 0 :(得分:3)

因为您正在寻找' 55'在' XX55XXX'中,您需要切换WHEN中的变量:

WHEN N.BLPU_TEXT LIKE '%'||N.BLPU_PAO_SAO||'%' 

WHEN N.BLPU_PAO_SAO LIKE '%'||N.BLPU_TEXT||'%' 

这将转为WHEN 'XX55XXX' LIKE '%55%'

它就像常规SQL SELECT [...] WHERE y LIKE z一样,在每个列z值中搜索模式y