我有一个名为DP的列,如下所示:
07-APR-2011
12-APR-2011
26-APR-2011现在,为了检索选择在4月份进行的付款的查询,我遇到了一个查询
select * from payments where instr(dp,'APR')<>0好吧,我很熟悉INSTR函数和>号,但是我不能在这里用<> sign解释逻辑!
更新
我也意识到<>等同于!=。但我想说的是我们可以用
用instr(dp,'APR')代替instr(dp,'APR')<>0
发布于 2012-01-18 00:21:52
<>表示“不等于”。如果您愿意,也可以编写!=。
如果'APR'不是dp的子字符串,则instr(dp,'APR')返回0,因此instr(dp,'APR')<>0表示"'APR'是dp的子字符串“。它也可以写成dp LIKE '%APR%'。
更新问题的更新:
,但我的观点是,我们可以使用
instr(dp,'APR')而不是instr(dp,'APR')<>0
不,你不可能。SQL的一些方言将0视为"false“,将其他整数视为"true",但Oracle不这样做。它将整数和布尔值视为单独的类型,并且不会在它们之间进行隐式转换。WHERE 0不是有效的WHERE子句。
发布于 2012-01-18 00:26:11
<>是,不等于--基本上是检查字符串中是否出现了'APR'的子字符串。
如果该函数返回0,则它将指示'APR'不会出现在要搜索字符串中的任何位置。
https://stackoverflow.com/questions/8898050
复制相似问题