2015-01-09 35 views
1

我正在寻找比较更新语句中的两个字符串字段。如果存在文本匹配,则语句将该字段更新为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); 

您的时间非常感谢

+2

请为您正在使用的数据库引擎添加标签 - 这会为您提供更多相关答案。 –

+2

你有控制数据库吗?鉴于您正在搜索的文本和您正在搜索的文本都在同一条记录中,我想知道CARTO_BLPU_BLPU_MATCH是否只是一个计算列? –

+0

是的,我可以控制数据库。我会考虑关于计算列的建议。谢谢你的帮助 – Baz

回答

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相似,其中在每列y中搜索的值为z