假设我有这个数字123456789,我有一个表列,它有不同的值,比如:
TABLE_COLUMN 123 456 555 763
有没有一种方法可以执行类似SELECT * FROM TABLE WHERE 123456789 CONTAINS(来自该表列的值)的操作。
rlcwz9us1#
你在找这个吗?
select t.* from table t where cast(123456789 as varchar2(255)) like '%' || cast(table_column as varchar2(255)) || '%';
显式强制转换不是必需的,但我不喜欢隐式类型转换。
67up9zun2#
INSTR怎么样?
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>
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()转换为字符串。
TO_CHAR()
3条答案
按热度按时间rlcwz9us1#
你在找这个吗?
显式强制转换不是必需的,但我不喜欢隐式类型转换。
67up9zun2#
INSTR
怎么样?ezykj2lf3#
您显示了一些伪代码,但我怀疑这是您想要做的。您显示“select * from table where...”-字符串123456789是否在您必须检查的列所在的同一个表中?听起来很奇怪
相反,我想象你有一个表,其中有一列你必须测试的值,还有一个“输入”值(一个单独的值或者可能是ANOTHER表中的值),你必须测试“测试”表中的所有值(所有行中)的输入值。
如果是这样的话,你可能想要这样的东西。。我将输入显示为一个绑定变量,但您可以很容易地将其更改为其他用途。
如果输入(或存储在该列中的值)是数字而不是字符串,则可以使用
TO_CHAR()
转换为字符串。