【问题标题】:find if result of query is found anywhere in column查找是否在列中的任何位置找到查询结果
【发布时间】:2018-10-08 14:01:51
【问题描述】:

我有一列包含 varchar 值,并且需要查找是否可以在该列的任何位置找到查询结果。例如,varchar 列可能具有以下值:

  • abc100
  • 00100
  • 100
  • 200

一个选择查询可能有以下结果:

  • 100
  • 200

我需要返回 varchar 列中任何位置的值为“100”或“200”的所有值。在这种情况下,应返回 varchar 列中的所有结果。

这是我目前拥有的:

select varcharColumn from table where varcharColumn like (select query)

当我尝试此查询时,我收到以下错误:

“标量全查询、SELECT INTO 语句或 VALUES INTO 语句的结果多于一行”

如何让此查询返回 varchar 列的列表,其中任何部分都包含选择查询的结果?

【问题讨论】:

  • 你用的是什么数据库?!您已经标记了三个不同的数据库引擎...
  • 你不能在另一个选择查询中使用like(除非只返回1个值)
  • 根据错误信息看起来像 db2
  • 通常你可以用 IndexOf 函数来做到这一点,db2 有类似的函数吗?

标签: sql select db2


【解决方案1】:

like 只能比较两行。比较多行的许多方法之一是exists 子查询,例如:

select  varcharColumn 
from    table t1
where   exists
        (
        select  *
        from    <your other table> t2
        where   t1.varcharColumn like concat('%', t2.varcharColumn, '%')
        )

【讨论】:

    【解决方案2】:

    你可以使用这样的东西

    select a.* from testtable1 a, testtable2           
    where varcharColumn   like '%'||testtable2.subqueryCOl||'%' 
    

    这将匹配所有 100、200 的记录。如果需要,您可以将子查询查询为 testtable2

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-31
    相关资源
    最近更新 更多