Использовать строку содержит функцию в oracle SQL-запросе
Я использую базу данных Oracle, и я хочу знать, как я могу найти строки в столбце типа varchar, где значения этого столбца имеют строку, содержащую некоторый символ.
Я пытаюсь что-то вроде этого (это простой пример того, что я хочу), но он не работает:
select p.name
from person p
where p.name contains the character 'A';
Я также хочу знать, могу ли я использовать такую функцию, как chr(1234)
, где 1234 - это код ASCII вместо символа 'A'
в моем примере запроса, потому что в моем случае я хочу искать в своей базе данных значения, имя человека содержит символ с кодом 8211 как код ASCII.
С запросом select CHR(8211) from dual;
я получаю специальный символ, который я хочу.
Пример:
select p.name
from person p
where p.name contains the character chr(8211);
Ответы
Ответ 1
По строкам я предполагаю, что вы имеете в виду строки в таблице person
. Что вы ищете:
select p.name
from person p
where p.name LIKE '%A%'; --contains the character 'A'
Вышеприведенный регистр чувствителен к регистру. Для нечувствительного к регистру поиска вы можете:
select p.name
from person p
where UPPER(p.name) LIKE '%A%'; --contains the character 'A' or 'a'
Для специального символа вы можете:
select p.name
from person p
where p.name LIKE '%'||chr(8211)||'%'; --contains the character chr(8211)
Оператор LIKE
соответствует шаблону. Синтаксис этой команды подробно описан в документации Oracle. В основном вы будете использовать знак %
, поскольку он означает совпадение нуля или более символов.
Ответ 2
Ответ ADTC работает отлично, но я нашел другое решение, поэтому я размещаю его здесь, если кто-то хочет что-то другое.
Я думаю, что решение ADTC лучше, но мое тоже работает.
Вот другое решение, которое я нашел
select p.name
from person p
where instr(p.name,chr(8211)) > 0; --contains the character chr(8211)
--at least 1 time
Спасибо.