我有一个名为DP的列如下所示:
07-APR-2011
12-APR-2011
26-APR-2011
现在要检索用于选择在4月份进行的付款的查询,我遇到了一个查询
select * from payments where instr(dp,'APR')<>0
好的,我很熟悉INSTR功能和&gt;签名,但不能用<> sign
在这里解释逻辑!
[更新]
我也知道<>
相当于!=
。
但我的观点是我们可以使用
instr(dp,'APR')
代替instr(dp,'APR')<>0
答案 0 :(得分:6)
<>
表示“不等于”。如果您愿意,也可以写!=
。
instr(dp,'APR')
不是'APR'
的子字符串,则 dp
返回零,因此instr(dp,'APR')<>0
表示“'APR'
是dp
的子字符串” 。它也可以写成dp LIKE '%APR%'
。
更新更新的问题:
但我的观点是,我们可以使用
instr(dp,'APR')
代替instr(dp,'APR')<>0
不,你不可能。 SQL的一些方言将零视为“false”,将其他整数视为“true”,但Oracle不会这样做。它将整数和布尔值视为单独的类型,并且不会在它们之间隐式转换。 WHERE 0
不是有效的WHERE子句。
答案 1 :(得分:3)
<>
不等于 - 基本上它会检查字符串中是否出现'APR'
的子字符串。
如果该函数返回0
,则表示'APR'
未出现在要搜索的字符串中的任何位置。