2012-01-17 4 views
3

Я имею столбец с именем DP, как показано:SQL функции Instr()

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

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

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

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

[UPDATE]

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

+5

'<>' is 'Not Equals' - в основном это проверка того, что подстрока' APR' появляется в строке. – JNK

+1

это функциональный эквивалент '! =', Если вы видели это на других языках. –

+0

в порядке, но для этого мы могли бы просто использовать 'instr (dp, 'APR')' – kushalvm

ответ

6

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

instr(dp,'APR') возвращает ноль, если 'APR' не подстроку dp, так instr(dp,'APR')<>0 означает «'APR' подстрока dp». Он также может быть записан как dp LIKE '%APR%'.

Update для обновления вопрос:

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

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

+0

Что я знаю, но я не могу угадать логику его использования здесь. – kushalvm

+0

@ kushal: Я обновил свой ответ. – ruakh

+0

Спасибо, человек ответил на мой вопрос. – kushalvm

3

<> is Not Equals - в основном это проверка того, что подстрока 'APR' появляется в строке.

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

Смежные вопросы