Подтвердить что ты не робот

Использовать строку содержит функцию в 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);
4b9b3361

Ответ 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

Спасибо.