如何检查/选择字符串是否包含表列值中的值?

时间:2019-01-07 16:18:34

标签: sql oracle

让我们说我有这个数字123456789,并且我有一个表列,这些表的列具有不同的值,例如:

TABLE_COLUMN
123
456
555
763

有没有办法在SELECT * FROM TABLE WHERE 123456789 CONTAINS(该表列中的值)之类的内容中进行操作。

3 个答案:

答案 0 :(得分:2)

您在寻找这个吗?

select t.*
from table t
where cast(123456789 as varchar2(255)) like '%' || cast(table_column as varchar2(255)) || '%';

显式强制转换不是必需的,但是我不喜欢隐式类型转换。

答案 1 :(得分:1)

INSTR怎么样?

SQL> with test (tc) as
  2    (select '123' from dual union all
  3     select '456' from dual union all
  4     select '555' from dual union all
  5     select '763' from dual
  6    )
  7  select *
  8  from test
  9  where instr('123456789', tc) > 0;

TC
---
123
456

SQL>

答案 2 :(得分:1)

您显示了一些伪代码,但是我怀疑那是您想要做的。您显示“从表中的位置选择* ...”-字符串123456789在同一表中您具有必须对其进行检查的列吗?听起来很奇怪。

相反,我假设您有一个表,其中包含一列必须测试的值和一个“输入”值(一个值或另一个表中的值),并且必须针对所有输入测试该输入值“测试”表中的值(在所有行中)。

如果是这样,您可能想要这样...我将输入显示为绑定变量,但是您可以轻松地将其更改以用于其他用途。

select <whatever>
from   <wherever>
where  exists (select * from <table> where instr(:input_string, table_column) > 0)

如果输入(或存储在该列中的值)是数字而不是字符串,则可以使用TO_CHAR()转换为字符串。