Sql Oracle query - поле содержит специальные символы или альфа - PullRequest
0 голосов
/ 07 ноября 2018

нужно посмотреть, содержит ли поле таксиса буквы или какие-либо специальные символы :. *,!,?, @, #, $, &, +, (,), /

Как мне написать этот SQL?

Ответы [ 2 ]

0 голосов
/ 07 ноября 2018

Вот лучший способ показать все таксоны, которые НЕ полностью состоят из цифр:

select taxid
from   your_table
where  translate(taxid, '.0123456789', '.') is not null

TRANSLATE будет «переводить» (заменять) каждый период на входе на период на выходе. Поскольку другие символы во втором аргументе не имеют соответствующего символа в третьем аргументе, они будут просто удалены. Если результат этой операции , а не null, то taxid содержит хотя бы один символ, который не является цифрой. Если taxid это все цифры, результат операции будет null. Обратите внимание, что используемый здесь символ точки необходим из-за странности в определении Oracle TRANSLATE: если какой-либо из его аргументов равен null, то и его возвращаемое значение. Это не имеет большого смысла, но мы должны работать с функциями так, как их определил Oracle.

0 голосов
/ 07 ноября 2018

Oracle имеет регулярное выражение:

select * from tablename where regexp_like(columnname, '[*!?@#$&+()/]');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...