【问题标题】:How to compare two strings in an update statement如何在更新语句中比较两个字符串
【发布时间】:2015-01-09 17:20:31
【问题描述】:

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

非常感谢您的宝贵时间

【问题讨论】:

  • 请添加您正在使用的数据库引擎的标签 - 这将为您提供更相关的答案。
  • 您对数据库有控制权吗?鉴于您正在搜索的文本和您正在搜索的文本都在同一条记录中,我想知道 CARTO_BLPU_BLPU_MATCH 是否可以只是一个计算列?
  • 是的,我确实可以控制数据库。我将考虑有关计算列的建议。感谢您的帮助

标签: sql oracle wildcard


【解决方案1】:

由于您要在“XX55XXX”中寻找“55”,因此您需要切换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。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-21
    • 1970-01-01
    • 1970-01-01
    • 2016-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多