让我们说我有这个数字123456789,并且我有一个表列,这些表的列具有不同的值,例如:
TABLE_COLUMN
123
456
555
763
有没有办法在SELECT * FROM TABLE WHERE 123456789 CONTAINS(该表列中的值)之类的内容中进行操作。
答案 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()
转换为字符串。