oracle 如何检查/选择一个字符串是否包含来自表列值的值?

fbcarpbf  于 2023-06-05  发布在  Oracle
关注(0)|答案(3)|浏览(230)

假设我有这个数字123456789,我有一个表列,它有不同的值,比如:

TABLE_COLUMN
123
456
555
763

有没有一种方法可以执行类似SELECT * FROM TABLE WHERE 123456789 CONTAINS(来自该表列的值)的操作。

rlcwz9us

rlcwz9us1#

你在找这个吗?

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

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

67up9zun

67up9zun2#

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>
ezykj2lf

ezykj2lf3#

您显示了一些伪代码,但我怀疑这是您想要做的。您显示“select * from table where...”-字符串123456789是否在您必须检查的列所在的同一个表中?听起来很奇怪
相反,我想象你有一个表,其中有一列你必须测试的值,还有一个“输入”值(一个单独的值或者可能是ANOTHER表中的值),你必须测试“测试”表中的所有值(所有行中)的输入值。
如果是这样的话,你可能想要这样的东西。。我将输入显示为一个绑定变量,但您可以很容易地将其更改为其他用途。

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

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

相关问题