在 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 运算符匹配行中的值的主要内容,如果未能解决你的问题,请参考以下文章
类似于 Oracle PL/SQL 块中的 finally Block (JAVA)