繁体   English   中英

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

[英]How to check/select if a string contains value from a table column values?

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

TABLE_COLUMN
123
456
555
763

有没有一种方法可以像SELECT * FROM TABLE WHERE 123456789 CONTAINS(该表列中的值)那样进行操作。

您在找这个吗?

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

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

如何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>

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM