【发布时间】:2018-12-06 10:48:57
【问题描述】:
我在我们的一个应用程序的一个 sql 脚本中遇到了这个问题。我注意到它在其他各个地方都有使用,但它不只是检查项目的存在吗?
AND INSTR((SELECT (',' || REPLACE('OWN, JO', ' ', NULL) || ',') b FROM DUAL),
(',' || aao.AcctRoleCd || ',')) > 0
它在哪里寻找'OWN' 或'JO' 是否在aao.AcctRoleCd 中。如果是,那么INSTR 将导致它在字符串中的索引,所以它会大于一。所以AND 子句将是true。
这样检查一个项目是否存在不是很糟糕吗? IN 子句的更多内容会更好吗?
AND aao.AcctRoleCd IN ('OWN', 'JO');
【问题讨论】: