SQL-функция Instr () - PullRequest
       0

SQL-функция Instr ()

3 голосов
/ 17 января 2012

У меня есть столбец с именем DP, как показано:

 07-APR-2011
 12-APR-2011
 26-APR-2011

Теперь, чтобы получить запрос для выбора платежей, совершенных в апреле, я натолкнулся на запрос

select * from payments where instr(dp,'APR')<>0

Хорошо, я хорошо знаком с функцией INSTR и> знаком, но не могу интерпретировать логику с <> sign здесь!

[ОБНОВЛЕНИЕ]

Я также знаю, что <> эквивалентно!=.Но я хочу сказать, что мы могли бы использовать
instr(dp,'APR') вместо instr(dp,'APR')<>0

Ответы [ 2 ]

6 голосов
/ 17 января 2012

<> означает «не равно».Вы также можете написать !=, если хотите.

instr(dp,'APR') возвращает ноль, если 'APR' не является подстрокой dp, поэтому instr(dp,'APR')<>0 означает, что "'APR' является подстрокой dp».Его также можно записать как dp LIKE '%APR%'.

Обновление для обновленного вопроса:

Но я хочу сказать, что мы могли бы использовать instr(dp,'APR') вместо того, чтобы делатьinstr(dp,'APR')<>0

Нет, вы не могли бы.Некоторые диалекты SQL рассматривают ноль как «ложь», а другие целые числа как «истина», но Oracle этого не делает.Он рассматривает целые и логические значения как отдельные типы и не выполняет неявное преобразование между ними.WHERE 0 не является действительным предложением WHERE.

3 голосов
/ 17 января 2012

<> равно Не равно - в основном он проверяет, появляется ли в строке подстрока 'APR'.

Если эта функция вернула 0, то она будет указывать 'APR' не появляется нигде в строке для поиска.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...