在 pl/sql 块中使用 OR 运算符匹配行中的值

Posted

技术标签:

【中文标题】在 pl/sql 块中使用 OR 运算符匹配行中的值【英文标题】:Matching a value in the row using a OR operator in pl/sql block 【发布时间】:2017-10-05 13:52:53 【问题描述】:

有一列包含值 喜欢

ID_1 '1999|12241|1485988|2470|12731|1486125|999|12730|1485312|1485359|2468|12729|1485266|1485313|2467'
ID_2 '1485988|12241|1999|2470|12731|1486125|999|12730|1485312|1485359|2468|12729|1485266|1485313|2467'

我必须匹配他们

case
when instr(column_name,''1999|')>0 ----if it is in the beginning.
then column_name like ''1999||%'
when instr(column_name,''1999||')=0 
then column_name like '%|'1999|'--- if the value is in the end.

但是如何找到中间的值。 主要的问题是相同的值可以出现在一行的中间,最后出现在另一行。两者都需要 可以考虑。

我尝试使用“或”运算符。很费时间。

select * from table_name where column_name like ('%|1999') or column_name like  ('%|1999|%') or column_name like  ('1999|%');

我应该重新定义我的方法吗?

【问题讨论】:

您应该改变在数据库中存储值的方式。 【参考方案1】:

如果你在前后加上|,你可以试试只喜欢一个

select * from table_name 
 where '|'||column_name||'|' like  ('%|1999|%') 
; 

更简单,不确定更快。

希望对你有帮助 J

【讨论】:

以上是关于在 pl/sql 块中使用 OR 运算符匹配行中的值的主要内容,如果未能解决你的问题,请参考以下文章

匿名 pl/sql 块中的声明顺序

如何处理 pl/sql 块中的编译时异常?

检查 PL/SQL 异常块中的特定错误代码

类似于 Oracle PL/SQL 块中的 finally Block (JAVA)

Oracle Apex:PL/SQL 块中的 Javascript 代码

如何将游标添加到 PL/SQL 块中的过程中?