SQL函数Instr()

kus*_*lvm 3 sql oracle

我有一个名为DP的列,如下所示:

 07-APR-2011
 12-APR-2011
 26-APR-2011
Run Code Online (Sandbox Code Playgroud)

现在要检索用于选择在4月份进行的付款的查询,我遇到了一个查询

select * from payments where instr(dp,'APR')<>0
Run Code Online (Sandbox Code Playgroud)

好的,我很熟悉INSTR函数和>符号,但不能用<> sign 这里解释逻辑!

[UPDATE]

我也知道这<>相当于!= .但我的观点是,我们可以使用
instr(dp,'APR') 而不是做 instr(dp,'APR')<>0

rua*_*akh 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子句.