在结果集中查找SQL值

时间:2015-09-17 21:23:19

标签: sql oracle oracle11g

在我们的数据库模式中,ItemID通常包含在ItemValue列中,但它填充了信息(具体为URL)。我试图找到一种方法来查询我们的数据库,并查找ItemIDlue列中未包含ItemID的地方。

以下是我要做的事情的要点,替换为该行的ItemValue值。

SELECT ItemID, ItemValue
 FROM SomeTable
WHERE Deleted = 0
 AND ItemID NOT LIKE '%<ITEMVALUE>%'

感谢。

1 个答案:

答案 0 :(得分:3)

如果您想要不区分大小写,例如如果您的ItemID可以是字母数字,请引入lower()函数:

SELECT ItemID,
       ItemValue
  FROM SomeTable
 WHERE Deleted = 0
   AND lower(ItemID) NOT LIKE '%'|| lower(ITEMVALUE) ||'%';

或者:

SELECT ItemID,
       ItemValue
  FROM SomeTable
 WHERE Deleted = 0
   AND instr(lower(itemvalue), lower(ItemID)) = 0;

我不确定哪一个更具性能,但两者都有效。

如果您不关心大写或小写,例如如果ID是数字,您只需删除lower()函数。