LIKE (Transact-SQL)
Определяет, совпадает ли указанная символьная строка с заданным шаблоном. Шаблон может включать обычные символы и символы-шаблоны. Во время сравнения с шаблоном необходимо, чтобы его обычные символы в точности совпадали с символами, указанными в строке. Символы-шаблоны могут совпадать с произвольными элементами символьной строки. Использование wild карта символов делает LIKE оператор более гибким, чем с помощью = операторов сравнения строк и != строк. Если один из аргументов не является типом данных строки символов, SQL Server ядро СУБД преобразует его в тип данных строки символов, если это возможно.
Синтаксис
Синтаксис для SQL Server и Базы данных SQL Azure:
match_expression [ NOT ] LIKE pattern [ ESCAPE escape_character ]
Синтаксис для Azure Synapse Analytics и Parallel Data Warehouse:
match_expression [ NOT ] LIKE pattern
ESCAPE и STRING_ESCAPE не поддерживаются в Azure Synapse Analytics или analytics Platform System (PDW).
Сведения о синтаксисе Transact-SQL для SQL Server 2014 (12.x) и более ранних версиях см . в документации по предыдущим версиям.
Аргументы
match_expression
Любое допустимое выражение типа данных символов.
pattern
Определенная строка символов для поиска в match_expression и может содержать допустимые дикие карта символы в следующей таблице. Длина значения pattern не может превышать 8000 байт.
Если match_expression является более высоким приоритетом типа данных, чем шаблон, и длина шаблона больше match_expression, при неявном преобразовании значения шаблона в тип match_expression будет возникать ошибка усечения.
Символ-шаблон | Description | Пример |
---|---|---|
% | Любая строка, содержащая ноль или более символов. | WHERE title LIKE ‘%computer%’ находит все названия книги со словом computer в любом месте в названии книги. |
и символ подчеркивания ( _ ). | Любой одиночный символ. | WHERE au_fname LIKE ‘_ean’ находит все четыре буквы первых имен, которые заканчиваются ean ( Dean , Sean и т. д.). |
[ ] | Любой отдельный символ в указанном диапазоне [a-f] или наборе [abcdef] . | WHERE au_lname LIKE ‘[C-P]arsen’ находит фамилии автора, заканчивающиеся и начиная с arsen любого отдельного символа между C и P , например Carsen , Larsen и Karsen т. д. При выполнении операции поиска в диапазоне символы, включенные в диапазон, могут изменяться в зависимости от правил сортировки параметров сортировки. |
[^] | Любой отдельный символ, не в пределах указанного диапазона [^a-f] или набора [^abcdef] . | WHERE au_lname LIKE ‘de[^l]%’ находит все фамилии автора, начиная с de и где не указано l следующее письмо. |
escape_character
Символ, помещенный перед диким карта символом, чтобы указать, что дикий карта интерпретируется как обычный символ, а не как дикий карта. Аргумент escape_character является символьным выражением, не имеющим значения по умолчанию и возвращающим результат в виде одного символа.
Тип результата
Boolean
Значение результата
LIKE возвращает значение TRUE, если match_expression соответствует указанному шаблону.
Замечания
При сравнении строк с помощью LIKE все символы в строке шаблона являются значительными. К значимым символам также относятся начальные и конечные пробелы. Если сравнение в запросе заключается в возврате всех строк со строкой LIKE ‘abc ‘ ( abc за которым следует одно пробел), строка, в которой значение этого столбца ( abc abc без пробела) не возвращается. Однако завершающие пробелы в выражении, с которым сравнивается шаблон, не учитываются. Если сравнение в запросе заключается в возврате всех строк со строкой LIKE ‘abc’ ( abc без пробела), возвращаются все строки, начинающиеся с abc нуля или более конечных пустых.
Сравнение строк с использованием шаблона, содержащего данные char и varchar , может не передавать LIKE сравнение из-за того, как данные хранятся для каждого типа данных. В следующем примере передается локальная переменная char в хранимую процедуру, а затем используется сопоставление шаблонов для поиска всех сотрудников, фамилии которых начинаются с указанного набора символов.
-- Uses AdventureWorks CREATE PROCEDURE FindEmployee @EmpLName CHAR(20) AS SELECT @EmpLName = RTRIM(@EmpLName) + '%'; SELECT p.FirstName, p.LastName, a.City FROM Person.Person p INNER JOIN Person.Address a ON p.BusinessEntityID = a.AddressID WHERE p.LastName LIKE @EmpLName; GO EXEC FindEmployee @EmpLName = 'Barb'; GO
Выполнение процедуры FindEmployee не дает результатов, так как переменная типа char ( @EmpLName ) всегда имеет длину в 20 символов, до которой дополняется завершающими знаками пробела. Переменные, содержащиеся в столбце LastName , имеют тип varchar. Поэтому завершающие пробелы в них не дописываются. Данная процедура завершается неудачей, так как завершающие пробелы учитываются.
Процедура из следующего примера выполняется успешно, так как завершающие пробелы к переменной типа varchar не добавляются.
-- Uses AdventureWorks CREATE PROCEDURE FindEmployee @EmpLName VARCHAR(20) AS SELECT @EmpLName = RTRIM(@EmpLName) + '%'; SELECT p.FirstName, p.LastName, a.City FROM Person.Person p INNER JOIN Person.Address a ON p.BusinessEntityID = a.AddressID WHERE p.LastName LIKE @EmpLName; GO EXEC FindEmployee @EmpLName = 'Barb'; GO
FirstName LastName City ---------- -------------------- --------------- Angela Barbariol Snohomish David Barber Snohomish (2 row(s) affected)
Сопоставление шаблонов с помощью LIKE
LIKE поддерживает сопоставление шаблонов ASCII и сопоставление шаблонов Юникода. Если все аргументы (match_expression, pattern и escape_character, если он указан) имеют символьный тип ASCII, то применяется шаблон ASCII. Если один из аргументов имеет тип данных Юникода, все аргументы преобразуются в Юникод и выполняется сопоставление шаблонов Юникода. При использовании данных Юникода (nchar или nvarchar ) с LIKE конечными пустыми являются значительными, однако для данных, отличных от Юникода, конечные пробелы не являются значительными. Юникод LIKE совместим со стандартом ISO. ASCII LIKE совместим с более ранними версиями SQL Server.
В следующем ряде примеров показаны различия в строках, возвращаемых между ASCII и сопоставлением шаблонов Юникода LIKE .
-- ASCII pattern matching with char column CREATE TABLE t (col1 CHAR(30)); INSERT INTO t VALUES ('Robert King'); SELECT * FROM t WHERE col1 LIKE '% King'; -- returns 1 row -- Unicode pattern matching with nchar column CREATE TABLE t (col1 NCHAR(30)); INSERT INTO t VALUES ('Robert King'); SELECT * FROM t WHERE col1 LIKE '% King'; -- no rows returned -- Unicode pattern matching with nchar column and RTRIM CREATE TABLE t (col1 NCHAR(30)); INSERT INTO t VALUES ('Robert King'); SELECT * FROM t WHERE RTRIM(col1) LIKE '% King'; -- returns 1 row
LIKE сравнения влияют на параметры сортировки. Дополнительные сведения см. в статье COLLATE (Transact-SQL).
Использование дикого карта символа %
LIKE ‘5%’ Если задан символ, ядро СУБД ищет число 5 , за которым следует любая строка нулевых или более символов.
Например, при выполнении следующего примера отображаются все динамические административные представления базы данных AdventureWorks2022 , так как все они начинаются символами dm .
-- Uses AdventureWorks SELECT Name FROM sys.system_views WHERE Name LIKE 'dm%'; GO
Чтобы отобразить все объекты, не являющиеся динамическими административными представлениями, используется синтаксис NOT LIKE ‘dm%’ . Если у вас есть 32 объекта и LIKE найдено 13 имен, которые соответствуют шаблону, NOT LIKE находит 19 объектов, которые не соответствуют шаблону LIKE .
По такому шаблону, как LIKE ‘[^d][^m]%’ , не всегда будут возвращаться одни и те же имена. Вместо 19 имен можно найти только 14, так как имена, которые начинаются с буквы d или у которых второй буквой является m , будут исключены из результата, как и имена динамических административных представлений. Причиной такой реакции на событие является поэтапный поиск отрицательных символов-шаблонов: за один шаг обрабатывается один символ-шаблон. Процесс поиска совпадений прекращается при возникновении сбоя на любой стадии выполнения.
Используйте дикие карта символы в качестве литерала
Символы-шаблоны могут быть использованы в качестве литералов. Чтобы использовать символ-шаблон в качестве литерала, его необходимо заключать в скобки. В следующей таблице показаны несколько примеров использования LIKE ключевое слово и [ ] диких символов карта.
Символ | Значение |
---|---|
LIKE ‘5[%]’ | 5% |
LIKE ‘[_]n’ | _n |
LIKE ‘[a-cdf]’ | a , b , c , d или f |
LIKE ‘[-acdf]’ | — , a , c , d или f |
LIKE ‘[ [ ]’ | [ |
LIKE ‘]’ | ] |
LIKE ‘abc[_]d%’ | abc_d и abc_de . |
LIKE ‘abc[def]’ | abcd , abce и abcf |
Сопоставление шаблонов с предложением ESCAPE
Можно искать символьные строки, в состав которых входит один или более специальных символов-шаблонов. Например, таблица discounts базы данных customers может содержать значения скидок, включающих знак процента (%). Чтобы выполнить поиск знака процента в качестве символа-шаблона, необходимо ввести ключевое слово ESCAPE и escape-символ. Например, образец базы данных содержит столбец с именем comment, в котором хранится значение «30%». Чтобы найти строки, содержащие последовательность символов «30%» в столбце comment, необходимо указать предложение WHERE, например WHERE comment LIKE ‘%30!%%’ ESCAPE ‘!’ . Если escape-код и escape-символ не указаны, ядро СУБД возвращает строки со строкой 30! .
Если в шаблоне LIKE после escape-символа нет никакого символа, то шаблон является недопустимым и оператор LIKE возвращает значение FALSE. Если символ после escape-символа не является символом-шаблоном, то escape-символ игнорируется, а следующий символ рассматривается как обычный символ в шаблоне. К этим символам-шаблонам относятся: подчеркивание (_), процент (%) и левая квадратная скобка ([), в том случае, если они заключены в квадратные скобки. Escape-символы могут использоваться в квадратных скобках ([ ]), включая: знак вставки (^), дефис (-) и правую квадратную скобку (]).
0x0000 (char(0)) является неопределенным символом в параметрах сортировки Windows и не может быть включен в LIKE.
Примеры
А. Использование LIKE с диким символом % карта
В следующем примере в таблице 415 выполняется поиск всех телефонных номеров с кодом города PersonPhone .
-- Uses AdventureWorks SELECT p.FirstName, p.LastName, ph.PhoneNumber FROM Person.PersonPhone AS ph INNER JOIN Person.Person AS p ON ph.BusinessEntityID = p.BusinessEntityID WHERE ph.PhoneNumber LIKE '415%' ORDER BY p.LastName; GO
FirstName LastName Phone ----------------- ------------------- ------------ Ruben Alonso 415-555-124 Shelby Cook 415-555-0121 Karen Hu 415-555-0114 John Long 415-555-0147 David Long 415-555-0123 Gilbert Ma 415-555-0138 Meredith Moreno 415-555-0131 Alexandra Nelson 415-555-0174 Taylor Patterson 415-555-0170 Gabrielle Russell 415-555-0197 Dalton Simmons 415-555-0115 (11 row(s) affected)
B. Использование NOT LIKE с диким символом % карта
В следующем примере в таблице PersonPhone выполняется поиск всех телефонных номеров с региональным кодом, отличным от 415 .
-- Uses AdventureWorks SELECT p.FirstName, p.LastName, ph.PhoneNumber FROM Person.PersonPhone AS ph INNER JOIN Person.Person AS p ON ph.BusinessEntityID = p.BusinessEntityID WHERE ph.PhoneNumber NOT LIKE '415%' AND p.FirstName = 'Gail' ORDER BY p.LastName; GO
FirstName LastName Phone ---------------------- -------------------- ------------------- Gail Alexander 1 (11) 500 555-0120 Gail Butler 1 (11) 500 555-0191 Gail Erickson 834-555-0132 Gail Erickson 849-555-0139 Gail Griffin 450-555-0171 Gail Moore 155-555-0169 Gail Russell 334-555-0170 Gail Westover 305-555-0100 (8 row(s) affected)
C. Использование предложения ESCAPE
В следующем примере предложение ESCAPE и escape-символ используются для поиска символьной строки 10-15% в столбце c1 таблицы mytbl2 .
USE tempdb; GO IF EXISTS ( SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'mytbl2' ) DROP TABLE mytbl2; GO USE tempdb; GO CREATE TABLE mytbl2 (c1 SYSNAME); GO INSERT mytbl2 VALUES ('Discount is 10-15% off'), ('Discount is .10-.15 off'); GO SELECT c1 FROM mytbl2 WHERE c1 LIKE '%10-15!% off%' ESCAPE '!'; GO
D. Используйте дикие [ ] карта символы
В следующем примере выполняется поиск в таблице Person сотрудников с именем Cheryl или Sheryl .
-- Uses AdventureWorks SELECT BusinessEntityID, FirstName, LastName FROM Person.Person WHERE FirstName LIKE '[CS]heryl'; GO
В следующем примере выполняется поиск строк в таблице Person для сотрудников с фамилией Zheng или Zhang .
-- Uses AdventureWorks SELECT LastName, FirstName FROM Person.Person WHERE LastName LIKE 'Zh[ae]ng' ORDER BY LastName ASC, FirstName ASC; GO
Примеры: Azure Synapse Analytics и система платформы аналитики (PDW)
Д. Использование LIKE с диким символом % карта
В следующем примере в таблице DimEmployee выполняется поиск всех сотрудников, телефонные номера которых начинаются с 612 .
-- Uses AdventureWorks SELECT FirstName, LastName, Phone FROM DimEmployee WHERE phone LIKE '612%' ORDER BY LastName;
F. Использование NOT LIKE с диким символом % карта
В следующем примере в таблице DimEmployee выполняется поиск всех телефонных номеров, которые не начинаются с 612 .
-- Uses AdventureWorks SELECT FirstName, LastName, Phone FROM DimEmployee WHERE phone NOT LIKE '612%' ORDER BY LastName;
G. Использование LIKE с диким символом _ карта
В следующем примере в таблице DimEmployee выполняется поиск всех телефонных номеров, начинающихся с 2 и заканчивающихся на 6 . Подстановочный знак «%» добавлен в конце шаблона поиска, что соответствует любым следующим символам в значениях столбца с телефонными номерами.
-- Uses AdventureWorks SELECT FirstName, LastName, Phone FROM DimEmployee WHERE phone LIKE '6_2%' ORDER BY LastName;
См. также
- PATINDEX (Transact-SQL)
- Выражения (Transact-SQL)
- Что такое функции базы данных SQL?
- SELECT (Transact-SQL)
- SELECT (Transact-SQL)
- WHERE (Transact-SQL)
Подстановочные знаки в SQL
В этой статье пойдет разговор о подстановочных символах в структурированном языке запросов SQL (structured query language). Понимание работы соответствующего оператора Like позволит вам выполнять специальные запросы и возвращать (return) искомые значения. Будут рассмотрены примеры для системы управления базами данных MS SQL Server.
Подстановочные знаки необходимы для замены любых символов в строке с последующим сравнением и выборкой нужных данных из таблицы. Они используются при составлении запроса. В декларативном языке программирования SQL для этих целей используется специальный оператор Like. В сочетании с ключевым словом WHERE, Like обеспечивает поиск заданного шаблона в необходимом столбце.
Изучив описание и список (List of wildcards) ниже, вы узнаете, какие подстановочные знаки можно использовать с оператором Like:
- «%» — может замещать собой любые значения (ноль и больше);
- «_» — нижнее подчеркивание означает лишь один символ;
- «[]» — здесь следует любой отдельный символ;
- «^» — тоже любой символ, но не заключенный в скобки;
- «-» — через дефис можно прописать целый набор символов, некий интересующий диапазон.
Выше мы рассмотрели подстановочные знаки для MS SQL Server — СУБД от Microsoft. Однако если сравнить системы SQL Server и Access, мы увидим, что схожим образом обстоит ситуация и в случае с базами данных MS Access — они тоже имеют свою систему подстановочных элементов — вот для сравнения List of wildcards для MS Access:
Также, глядя на вышеуказанные списки, стоит учесть, что все эти элементы можно применять в разнообразных комбинациях.
Однако давайте лучше перейдем к практике: займемся составлением простейших запросов и посмотрим, как Like выполняет возвращение (returning) искомых данных.
Работа Like на примерах MS SQL Server
Для демонстрации работы оператора Like воспользуемся таблицей Customer со следующим содержимым:
Составим инструкцию, которая вернет (returned) из таблицы клиентов (from customers) всех покупателей, имена которых начинаются с буквы «а»:
SELECT * FROM Customer
WHERE FirstName LIKE ‘a%’;
После сравнения и выборки данных клиентов останется всего двое, что соответствует действительности:
Теперь давайте выполним выборку покупателей, в именах которых содержатся буквы «ci». Местонахождение этих букв в слове в нашем случае значения не имеет — главное, чтобы они были:
Мы видим, что оператор Like возвращает (returns) 2 имени. Важно понимать, что не имеет значения, где именно эти символы, ведь % может означать и ноль, то есть указанные символы могут быть и в начале слова, и в середине, и в конце. Чтобы продемонстрировать это, выполним ту же команду, но уже для телефонов. Поместив в шаблон «2», мы увидим, что возвращаются (return) все номера, где встречается цифра 2, причем вне зависимости от места расположения этой двойки:
Теперь поработаем со знаком нижнего подчеркивания. Он означает один и только один любой символ. С его помощью сделаем выборку стран, названия которых заканчиваются на «exico»:
Также учтите, что регистр в составляемом шаблоне значения не имеет, то есть Like сравнивает и возвращает (return) значения без учета регистра:
Теперь немного изменим запрос и задействуем два символа подчеркивания:
После сопоставления данных и отработки запроса мы получим такой же результат.
Дальше — интереснее. Можно выбрать из таблицы все страны, которые начинаются на «S», «F» и «G». Тут пригодятся квадратные скобки и % — то есть мы используем уже комбинацию:
Как видите, все очень даже просто. В следующем предложении выберем уже диапазон значений из нужного столбца, воспользовавшись комбинацией трех подстановочных элементов:
То есть мы вывели все страны, названия которых начинаются с букв A, B или C.
Теперь давайте вспомним, что в программировании существует равно (==) и не равно (!=). По схожей аналогии работает и [charlist]. Если в начале квадратных скобок мы поместим восклицательный знак, произойдет выборка всех данных, которые не отвечают поставленному условию (not). Синтаксис следующий:
Благодаря этому запросу мы получим все города, названия которых НЕ начинаются с букв A, B или C. Но если вернуться к таблицам начала статьи, становится понятно, что это работает лишь для БД MS Access.
SQL LIKE
Оператор LIKE используется в предложении WHERE для поиска указанного шаблона в столбце.
Есть два подстановочных знака, часто используемых в сочетании с оператором LIKE:
- % — Знак процента представляет собой ноль, один или несколько символов
- _ — Подчеркивание представляет собой один символ
Примечание: MS Access использует звездочку (*) вместо знака процента (%) и вопросительный знак (?) вместо подчеркивания (_).
Знак процента и подчеркивание также могут использоваться в комбинациях!
Синтаксис LIKE
SELECT column1, column2, .
FROM table_name
WHERE columnN LIKE pattern;
Совет: Вы также можете комбинировать любое количество условий с помощью операторов AND или OR.
Вот несколько примеров, показывающих различные операторы LIKE с подстановочными знаками ‘%’ и ‘_’:
LIKE | Описание |
---|---|
WHERE CustomerName LIKE ‘a%’ | Находит любые значения, которые начинаются с «a» |
WHERE CustomerName LIKE ‘%a’ | Находит любые значения, которые заканчиваются на «a» |
WHERE CustomerName LIKE ‘%or%’ | Находит любые значения, которые имеют «or» в любой позиции |
WHERE CustomerName LIKE ‘_r%’ | Находит любые значения, имеющие букву «r» во второй позиции |
WHERE CustomerName LIKE ‘a__%’ | Находит любые значения, начинающиеся с буквы «a» и имеющие длину не менее 3 символов |
WHERE ContactName LIKE ‘a%o’ | Находит любые значения, которые начинаются с «a» и заканчиваются «о» |
Демо база данных
Ниже приведен выбор из таблицы «Customers» в образце базы данных Northwind:
Примеры SQL LIKE
Следующая инструкция SQL выбирает всех клиентов с именем клиента, начинающимся с «a»:
Пример
SELECT * FROM Customers
WHERE CustomerName LIKE ‘a%’;
Следующая инструкция SQL выбирает всех клиентов с именем клиента, оканчивающимся на «a»:
Пример
SELECT * FROM Customers
WHERE CustomerName LIKE ‘%a’;
Следующая инструкция SQL выбирает всех клиентов с именем клиента, которые имеют «or» в любой позиции:
Пример
SELECT * FROM Customers
WHERE CustomerName LIKE ‘%or%’;
Следующая инструкция SQL выбирает всех клиентов с именем клиента, которые имеют «r» во второй позиции:
Пример
SELECT * FROM Customers
WHERE CustomerName LIKE ‘_r%’;
Следующая инструкция SQL выбирает всех клиентов с именем клиента, которое начинается с буквы «a» и имеет длину не менее 3 символов:
Пример
SELECT * FROM Customers
WHERE CustomerName LIKE ‘a__%’;
Следующая инструкция SQL выбирает всех клиентов с именем контакта, которое начинается с «a» и заканчивается на «o»
Пример
SELECT * FROM Customers
WHERE ContactName LIKE ‘a%o’;
Следующая инструкция SQL выбирает всех клиентов с именем клиента, которое не начинается с «a»:
Пример
SELECT * FROM Customers
WHERE CustomerName NOT LIKE ‘a%’;
Мы только что запустили
SchoolsW3 видео
курс сегодня!
Сообщить об ошибке
Если вы хотите сообщить об ошибке или внести предложение, не стесняйтесь отправлять на электронное письмо:
Ваше предложение:
Спасибо Вам за то, что помогаете!
Ваше сообщение было отправлено в SchoolsW3.
Schoolsw3 оптимизирован для бесплатного обучения, проверки и подготовки знаний. Примеры в редакторе упрощают и улучшают чтение и базовое понимание. Учебники, ссылки, примеры постоянно пересматриваются, чтобы избежать ошибок, но не возможно гарантировать полную правильность всего содержания. Некоторые страницы сайта могут быть не переведены на РУССКИЙ язык, можно отправить страницу как ошибку, так же можете самостоятельно заняться переводом. Используя данный сайт, вы соглашаетесь прочитать и принять Условия к использованию, Cookies и политика конфиденциальности.
Оператор LIKE SQL: примеры и синтаксис
LIKE в SQL выполняет функцию оператора, который помогает фильтровать результаты. Показываем, как правильно использовать оператор LIKE.
LIKE SQL — это оператор, который используется для поиска строк, содержащих определённый шаблон символов. Подробнее о нём читайте в нашей статье.
- Синтаксис LIKE SQL
- Примеры использования LIKE SQL
Синтаксис LIKE SQL
Использовать оператор LIKE в SQL очень просто: достаточно прописать стандартную команду выбора SELECT * FROM и задать условие через WHERE, где и будет использован оператор LIKE.
Шаблон LIKE SQL:
SELECT column1, column2, . FROM table_nameWHERE columnN LIKE pattern;
Существует два подстановочных знака, которые используются в сочетании с оператором LIKE SQL:
- % — знак процента представляет собой ноль, один или несколько символов;
- _ — подчёркивание представляет собой один символ.
Примеры использования LIKE SQL
Рассмотрим SQL LIKE примеры. Представим, что вы хотите найти все имена, начинающиеся с буквы J. Для этого достаточно использовать следующий запрос:
SELECT * FROM table_name WHERE name LIKE 'J%';
В данном случае символ % используется для указания любого количества символов после J. Таким образом, запрос найдёт все имена, которые начинаются с буквы J, независимо от того, какие символы следуют за ней.
Ещё один пример — поиск всех адресов электронной почты, содержащих слово gmail. Для этого можно использовать следующий запрос:
SELECT * FROM table_name WHERE email LIKE '%gmail%';
Здесь символы % используются для указания, что слово gmail может быть в любом месте в адресе электронной почты.
Тест: какой вы айтишник из кино
Также можно использовать символ _ для указания одного символа. Например, запрос ниже найдет все имена, состоящие из шести символов. Эти имена должны начинаться с буквы J и заканчиваться буквой n:
SELECT * FROM table_name WHERE name LIKE 'J____n';
Здесь каждый символ _ указывает на любой один символ.
Иногда символы % и _ сами могут быть частью искомой строки. В таких случаях их нужно экранировать. Например, запрос ниже найдет все имена, содержащие символ %:
SELECT * FROM table_name WHERE name LIKE '%\%%';
Это было короткое руководство по работе с SQL LIKE. Также вы можете почитать о других основных командах SQL.