Sql select like: LIKE | SQL | SQL-tutorial.ru

]  Исключающий диапазон или
последовательность символов Пример 4

Примеры оператора SQL LIKE: Имеется следующая таблица Universities:

ID UniversityName Students Faculties Professores Location Site
1 Perm State National Research University 12400 12 1229 Perm psu.ru
2 Saint Petersburg State University 21300 24 13126 Saint-Petersburg  spbu.ru
3 Novosibirsk State University 7200 13 1527 Novosibirsk nsu.ru
4 Moscow State University 35100 39 14358 Moscow msu.ru
5 Higher School of Economics 20335 12 1615 Moscow hse.ru
6 Ural Federal University 57000 19 5640 Yekaterinburg urfu.ru
7 National Research Nuclear University 8600 10 936 Moscow mephi.ru

Пример 1. С помощью оператора SQL LIKE вывести записи университетов, имеющих в своем названии слово «State»:

SELECT * FROM Universities WHERE UniversityName LIKE '%State%'

Результат:

ID UniversityName Students Faculties Professores Location Site
1 Perm State National Research University 12400 12 1229 Perm psu.ru
2 Saint Petersburg State University 21300 24 13126 Saint-Petersburg  spbu.ru
3 Novosibirsk State University 7200 13 1527 Novosibirsk nsu.ru
4 Moscow State University 35100 39 14358 Moscow msu.ru

В этом примере, в качестве шаблона оператора SQL LIKE послужил ‘%State%’. Исходя из условия задачи, слово State может стоять в названии где угодно, поэтому оно обрамлено символом «%», обозначающим строку любой длины перед и после слова.

Пример 2. С помощью оператора SQL LIKE вывести записи университетов, доменное имя сайта которых содержит 4 символа (за исключением домена .ru):

SELECT * FROM Universities WHERE Site LIKE '____.ru'

Результат:

ID UniversityName Students Faculties
Professores Location Site
2 Saint Petersburg State University 21300 24 13126 Saint-Petersburg  spbu.ru
6 Ural Federal University 57000 19 5640 Yekaterinburg urfu.ru

Пример 3. С помощью оператора SQL LIKE вывести записи университетов, первая буква доменного имени сайта которых содержит буквы из диапазона [k-o]:

SELECT * FROM Universities WHERE Site LIKE '[k-o]%'

Результат:

ID UniversityName Students Faculties Professores Location Site
3 Novosibirsk State University 7200 13 1527 Novosibirsk nsu.ru
4 Moscow State University 35100 39 14358 Moscow msu.e-o]%'

Результат:

ID UniversityName Students Faculties Professores Location Site
2 Saint Petersburg State University 21300 24 13126 Saint-Petersburg  spbu.ru

Содержание

SQL LIKE - строка с заданными символами и её поиск

Оглавление Связанные темы

Часто с помощью предиката SQL LIKE найти нужную строку в текстовых значениях таблицы проще, чем с помощью оператора равенства (=). Предикат LIKE используется в секции WHERE. После предиката прописывается выражение, содержащее символы алфавита, а также специальные символы - знак процента (%) и подчёркивание (_).

  • Символ % соответствует любому количеству любых символов, а также их отсутствую.
  • Символ _ соответствует ровно одному любому символу.

Приведём виды наиболее распространённых выражений, которые используются с предикатом LIKE для поиска подстроки.

  • 'xyz%' - любые строки, которые начинаются с букв xyz;
  • 'xyz_' - строка длиной в определённое количество символов, которая обязательно начинается с указанных букв;
  • '%z' - любая последовательность символов, которая заканчивается символом z;
  • '%Word%' - любая последовательность символов, содержащая слово 'Word' в любой позиции строки;
  • '% % %' - строка, содержащая не менее двух пробелов.

Следует обратить внимание, что в этих выражениях Word - не то же самое, что word, так как регистр символов имеет значение. В целом же синтаксис запросов с предикатом LIKE следующий:

SELECT СТОЛБЦЫ FROM ИМЯ_ТАБЛИЦЫ WHERE ИМЯ_СТОЛБЦА LIKE ВЫРАЖЕНИЕ

В примерах будем работать с базой данных "Театр". Таблица Play содержит данные о постановках. Таблица Team - о ролях актёров. Таблица Actor - об актёрах. Таблица Director - о режиссёрах. Поля таблиц, первичные и внешние ключи можно увидеть на рисунке ниже (для увеличения нажать левой кнопкой мыши). Данные будем извлекать из одной таблицы - Play.

Пример 1. Вывести спектакли, названия которых начинаются со слова 'King'.

Пишем запрос в котором с предикатом LIKE используем выражение 'King%':

SELECT Name FROM Play WHERE Name LIKE 'King%'

В результате выполнения запроса будет выведена таблица с одной строкой:

Пример 2. Вывести спектакли, названия которых начинаются с буквы 'O' и содержат 7 символов.

Пишем запрос в котором с предикатом LIKE используем выражение 'O______' (подчёркивание проставлено 6 раз):

SELECT Name FROM Play WHERE Name LIKE 'O______'

В результате выполнения запроса будет выведена таблица с одной строкой:

Поделиться с друзьями

SQL: LIKE с OR против IN



Есть ли какая-то разница в производительности между следующим?

NAME LIKE '%EXPRESSION_1%' 
OR NAME LIKE '%EXPRESSION_2%'
...
OR NAME LIKE '%EXPRESSION_N%'

VS

NAME IN (ACTUAL_VALUE_1,ACTUAL_VALUE_2,.., ACTUAL_VALUE_N)
sql oracle11g hql query-performance
Поделиться Источник Divs     22 февраля 2016 в 14:37

3 ответа


  • SQL Server 2005: использование оператора OR с оператором LIKE

    Как я могу использовать оператор LIKE с оператором OR в SQL Server 2005? Например: SELECT * FROM table WHERE column_name LIKE '%boo%' OR '%bar%' Это, кажется, не работает ! EDIT 1 : ОТВЕТ НА ПЕРВЫЙ ОПУБЛИКОВАННЫЙ ОТВЕТ: Круто, это работает ! но я только что впервые обнаружил, что ваши условия...

  • Использование LIKE с IN / OR в хранимой процедуре

    Я пытаюсь создать хранимую процедуру в SQL Server 2008, где я пытаюсь реплицировать простой запрос SELECT Col1, Col2 FROM Table WHERE Col1 LIKE 'A%' OR Col1 LIKE 'B%' OR Col1 LIKE 'C%' как CREATE PROCEDURE usp_MySP @ColValues varchar(100) = NULL AS SELECT Col1, Col2 FROM Table WHERE (@ColValues IS...



2

Версия IN потенциально намного, намного быстрее.

Эти две версии не делают одно и то же. Но, если любой из них соответствует вашим потребностям, версия IN может воспользоваться индексом на NAME . Версия LIKE не может, потому что шаблон начинается с подстановочного знака.

Вы могли бы написать это как:

WHERE NAME LIKE 'EXPRESSION_%' 

Если это соответствует вашим потребностям, он также может воспользоваться индексом на NAME .

Поделиться Gordon Linoff     22 февраля 2016 в 14:45



1

Вы можете просто попробовать использовать

NAME LIKE '%EXPRESSION_%' 

Что касается производительности, то IN сравнительно быстрее, чем OR. Кроме того, вы можете подтвердить производительность, используя план выполнения ваших двух запросов.

Кроме того, как было отмечено выше, два запроса, которые вы показываете, отличаются.

Первый запрос:

NAME LIKE '%EXPRESSION_1%' 
OR NAME LIKE '%EXPRESSION_2%'
...
OR NAME LIKE '%EXPRESSION_N%'

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

EXPRESSION_123
XXXEXPRESSION_1234
EXPRESSION_2323
EXPRESSION_2......

в то время как ваш второй запрос будет соответствовать записям, которые точно соответствуют

ACTUAL_VALUE_1,ACTUAL_VALUE_2.....

Поделиться Rahul Tripathi     22 февраля 2016 в 14:39



0

Если вы используете выражение переменной, которое может быть изменено в соответствии с заданным параметром. Затем использование

declare @Expression1 varchar(50)
Set @Expression2 = '%'+ @Expression1 +'%'


    NAME LIKE @Expression2

таким образом, какой бы параметр ни входил в @Expression1, он автоматически позаботится об этом.

Поделиться

Jai Prak     22 февраля 2016 в 14:48


  • SQL Select IN против LIKE в предложении WHERE

    Какой из них быстрее по производительности? SELECT field1, field2, field3, field4 FROM MyTable WHERE field5 LIKE '%AL' против SELECT field1, field2, field3, field4 FROM MyTable WHERE field5 IN ('AAL', 'IAL') или это не имеет никакого значения?

  • Эффективность SQL - [=] против [В] против [как] против [матчи]

    Просто из любопытства мне было интересно, есть ли какие-либо различия в скорости/эффективности использования синтаксиса [ = ] по сравнению с [ in ] по сравнению с [ like ] по сравнению с [ matches ] (только для 1 значения) для sql. select field from table where field = value; против select field...


Похожие вопросы:


Существует ли комбинация "LIKE" и "IN" в SQL?

В SQL мне (к сожалению) часто приходится использовать условия LIKE из-за баз данных, которые нарушают почти все правила нормализации. Я не могу изменить это прямо сейчас. Но это не имеет отношения...


Объединение LIKE с IN в SQL

Вместо выполнения: SELECT в FROM б WHERE в LIKE 'a%' OR а LIKE 'b%' OR а LIKE 'c%' есть ли способ выполнить что-то, функционирующее подобно этому псевдокоду? SELECT в FROM б WHERE в IN ('a%', 'b%',...


SQL где предложение с LIKE и IN

Итак, у меня есть ужасный запрос о том, что current существует в MS Access, который я пытаюсь переписать в SQL Server. В основном я получаю данные из текстового файла, который пытаюсь отфильтровать...


SQL Server 2005: использование оператора OR с оператором LIKE

Как я могу использовать оператор LIKE с оператором OR в SQL Server 2005? Например: SELECT * FROM table WHERE column_name LIKE '%boo%' OR '%bar%' Это, кажется, не работает ! EDIT 1 : ОТВЕТ НА ПЕРВЫЙ...


Использование LIKE с IN / OR в хранимой процедуре

Я пытаюсь создать хранимую процедуру в SQL Server 2008, где я пытаюсь реплицировать простой запрос SELECT Col1, Col2 FROM Table WHERE Col1 LIKE 'A%' OR Col1 LIKE 'B%' OR Col1 LIKE 'C%' как CREATE...


SQL Select IN против LIKE в предложении WHERE

Какой из них быстрее по производительности? SELECT field1, field2, field3, field4 FROM MyTable WHERE field5 LIKE '%AL' против SELECT field1, field2, field3, field4 FROM MyTable WHERE field5 IN...


Эффективность SQL - [=] против [В] против [как] против [матчи]

Просто из любопытства мне было интересно, есть ли какие-либо различия в скорости/эффективности использования синтаксиса [ = ] по сравнению с [ in ] по сравнению с [ like ] по сравнению с [ matches ]...


Сократите синтаксис SQL предложения LIKE до in

В SQL есть ли какой-нибудь способ сократить синтаксис из Select * from TableName where ColumnName like '%A%' or ColumnName like '%B' or ColumnName like 'C%' К Select * from TableName where...


sql запрос с комбинацией like и or

Мне нужно сделать что-то вроде этого запроса sql, но в codeigniter: SELECT `table`.* FROM (`table`) WHERE `name` LIKE '%9%' OR `id` LIKE '%9%' AND (`name` LIKE '%f%' OR `id` LIKE '%f%') Я пытался...


Как использовать like, or и when с orderby в sql

Нужно выбрать по 'codevalue' на основе подобного шаблона , а затем упорядочить их в определенном порядке . Я сделал следующий запрос, но sql через ошибку msg Неправильный синтаксис рядом с ключевым...

Команда LIKE - поиск по базе данных

Команда LIKE задает поиск по определенному шаблону.

См. также команду NOT, которая делает отрицание (к примеру, так: NOT LIKE).

Синтаксис

SELECT * FROM имя_таблицы WHERE поле LIKE шаблон_поиска

Примеры

Все примеры будут по этой таблице workers, если не сказано иное:

id
айди
name
имя
age
возраст
salary
зарплата
1 Дима 23 400
2 Петя 25 500
3 Вася 23 500
4 Коля 30 1000
5 Иван 27 500
6 Кирилл 28 1000

Пример

В данном примере команда LIKE найдет все записи, у которых имя заканчивается на 'я':

SELECT * FROM workers WHERE name LIKE '%я'

SQL запрос выберет следующие строки:

id
айди
name
имя
age
возраст
salary
зарплата
2 Петя 25 500
3 Вася 23 500
4 Коля 30 1000

Пример

Давайте выберем те записи, у которых возраст начинается с цифры 2, а затем идет еще один символ:

SELECT * FROM workers WHERE age LIKE '2_'

SQL запрос выберет следующие строки:

id
айди
name
имя
age
возраст
salary
зарплата
1 Дима 23 400
2 Петя 25 500
3 Вася 23 500
5 Иван 27 500
6 Кирилл 28 1000

Руководство по SQL. Предикат LIKE. – PROSELYTE

Для сравнения символьных строк на схожесть с определённым шаблоном в языке структурированных запросов SQL используется предикат LIKE. Существует два вида шаблонов, которые используются вместе с LIKE:

  • Символ процента – ‘%’
  • Символ подчеркивания – ‘_’

Символ процента обозначает один или несколько символов, а знак подчёркивания – одно число, или символ. Мы можем использовать символы в различных комбинациях.

Общий вид запроса с использованием предиката LIKE имеет следующий вид:


SELECT FROM имя талицы
WHERE имя_колонки LIKE '%XXXX'

или

SELECT FROM имя талицы
WHERE имя_колонки LIKE '%XXXX%'

или

SELECT FROM имя талицы
WHERE имя_колонки LIKE'_XXXX'

В данном примере ХХХХ представлены символьными строками.
Мы также можем использовать операторы AND/OR для комбинирования нескольких условий.

Пример:

Предположим, что у нас есть таблица developers, которая содержит следующие записи:


+----+-------------------+------------+------------+--------+
| ID | NAME              | SPECIALTY  | EXPERIENCE | SALARY |
+----+-------------------+------------+------------+--------+
|  1 | Eugene Suleimanov | Java       |          2 |   2500 |
|  2 | Peter Romanenko   | Java       |          3 |   3500 |
|  3 | Andrei Komarov    | JavaScript |          3 |   2500 |
|  4 | Konstantin Geiko  | C#         |          2 |   2000 |
|  5 | Asya Suleimanova  | UI/UX      |          2 |   1800 |
+----+-------------------+------------+------------+--------+

Допустим, что нам необходимо получить всех разработчиков, которые содержат в специальности последовательность символов ‘java’.
Для этого нам необходимо использовать следующую команду:


mysql> SELECT * FROM developers WHERE SPECIALTY LIKE '%java%';

В результате выполнения данного запроса мы получим следующий результат:


+----+-------------------+------------+------------+--------+
| ID | NAME              | SPECIALTY  | EXPERIENCE | SALARY |
+----+-------------------+------------+------------+--------+
|  1 | Eugene Suleimanov | Java       |          2 |   2500 |
|  2 | Peter Romanenko   | Java       |          3 |   3500 |
|  3 | Andrei Komarov    | JavaScript |          3 |   2500 |
+----+-------------------+------------+------------+--------+

Мы можем создавать любые шаблоны подстановки в зависимости от наших задач.

На этом мы заканчиваем изучение предиката LIKE.
В следующей статье мы рассмотрим, как получить определённое число первых записей из таблицы.

Есть ли в SQL комбинация «LIKE» и «IN»?

Я знаю, что очень поздно, но у меня была похожая ситуация. Мне понадобился оператор «Like In» для набора хранимых процедур, который принимает много параметров, а затем использует эти параметры для агрегирования данных из нескольких систем RDBMS, поэтому никакие специфичные для RDBMS приемы не будут работать, однако хранимая процедура и любые функции будет работать на MS SQL Server, поэтому мы можем использовать T-SQL для функциональности генерации полных операторов SQL для каждой СУБД, но выходные данные должны быть достаточно независимыми от СУБД.

Это то, что я на данный момент придумал, чтобы превратить разделенную строку (например, параметр, входящий в хранимую процедуру) в блок SQL. Я называю это «лишайником» для «LIKE IN». Возьми?

Lichen.sql

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =======================================================================
-- Lichen - Scalar Valued Function
-- Returns nvarchar(512) of "LIKE IN" results.  See further documentation.
-- CREATOR: Norman David Cooke
-- CREATED: 2020-02-05
-- UPDATED:
-- =======================================================================
CREATE OR ALTER FUNCTION Lichen 
(
    -- Add the parameters for the function here
    @leadingAnd bit = 1,
    @delimiter nchar(1) = ';',
    @colIdentifier nvarchar(64),
    @argString nvarchar(256)
)
RETURNS nvarchar(512)
AS
BEGIN
    -- Declare the return variable here
    DECLARE @result nvarchar(512)

    -- set delimiter to detect (add more here to detect a delimiter if one isn't provided)
    DECLARE @delimit nchar(1) = ';'
    IF NOT @delimiter = @delimit 
        SET @delimit = @delimiter


    -- check to see if we have any delimiters in the input pattern
    IF CHARINDEX(@delimit, @argString) > 1  -- check for the like in delimiter
    BEGIN  -- begin 'like in' branch having found a delimiter
        -- set up a table variable and string_split the provided pattern into it.
        DECLARE @lichenTable TABLE ([id] [int] IDENTITY(1,1) NOT NULL, line NVARCHAR(32))
        INSERT INTO @lichenTable SELECT * FROM STRING_SPLIT(@argString, ';')

        -- setup loop iterators and determine how many rows were inserted into lichen table
        DECLARE @loopCount int = 1
        DECLARE @lineCount int 
        SELECT @lineCount = COUNT(*) from @lichenTable

        -- select the temp table (to see whats inside for debug)
        --select * from @lichenTable

        -- BEGIN AND wrapper block for 'LIKE IN' if bit is set
        IF @leadingAnd = 1
            SET @result = ' AND ('
        ELSE
            SET @result = ' ('

        -- loop through temp table to build multiple "LIKE 'x' OR" blocks inside the outer AND wrapper block
        WHILE ((@loopCount IS NOT NULL) AND (@loopCount <= @lineCount))
        BEGIN -- begin loop through @lichenTable
            IF (@loopcount = 1) -- the first loop does not get the OR in front
                SELECT @result = CONCAT(@result, ' ', @colIdentifier, ' LIKE ''', line, '''') FROM @lichenTable WHERE id = @loopCount
            ELSE  -- but all subsequent loops do
                SELECT @result = CONCAT(@result, ' OR ', @colIdentifier, ' LIKE ''', line, '''') FROM @lichenTable WHERE id = @loopCount
            SET @loopcount = @loopCount + 1     -- increment loop
        END -- end loop through @lichenTable

        -- set final parens after lichenTable loop
        SET @result = CONCAT(@result, ' )')
    END  -- end 'like in' branch having found a delimiter
    ELSE -- no delimiter was provided
    BEGIN   -- begin "no delimiter found" branch
        IF @leadingAnd = 1 
            SET @result = CONCAT(' AND ', @colIdentifier, ' LIKE ''' + @argString + '''')
        ELSE
            SET @result = CONCAT(' ', @colIdentifier, ' LIKE ''' + @argString + '''')
    END     -- end "no delimiter found" branch

    -- Return the result of the function
    RETURN @result
END  -- end lichen function

GO

Обнаружение разделителя возможно запланировано, но сейчас по умолчанию используется точка с запятой, так что вы можете просто вставить его defaultтуда. В этом, вероятно, есть ошибки. @leadingAndПараметр только немного значение , чтобы определить , если вы хотите , ведущий «И» положить в передней части блока , так что прекрасно вписывается в другие предложения WHERE добавлений.

Пример использования (с разделителем в argString)

SELECT [dbo].[Lichen] (
   default        -- @leadingAND, bit, default: 1
  ,default        -- @delimiter, nchar(1), default: ';'
  ,'foo.bar'      -- @colIdentifier, nvarchar(64), this is the column identifier
  ,'01%;02%;%03%' -- @argString, nvarchar(256), this is the input string to parse "LIKE IN" from
)
GO

Вернет nvarchar (512), содержащий:

 AND ( foo.bar LIKE '01%' OR foo.bar LIKE '02%' OR foo.bar LIKE '%03%' ) 

Он также пропустит блок, если на входе нет разделителя:

Пример использования (без разделителя в argString)

SELECT [dbo].[Lichen] (
   default        -- @leadingAND, bit, default: 1
  ,default        -- @delimiter, nchar(1), default: ';'
  ,'foo.bar'      -- @colIdentifier, nvarchar(64), this is the column identifier
  ,'01%'          -- @argString, nvarchar(256), this is the input string to parse "LIKE IN" from
)
GO

Вернет nvarchar (512), содержащий:

 AND foo.bar LIKE '01%'

Я собираюсь продолжить работу над этим, поэтому, если я что-то упустил (явно очевидное или иное), пожалуйста, не стесняйтесь комментировать или обратиться.

SQL - Оператор LIKE

Класс LIKE используется для сравнения значения для аналогичных значений с использованием подстановочных знаков. Есть два подстановочных знака, используемые в сочетании с оператором LIKE.
  • Знак процента (%)
  • Подчеркивание (_)

Знак процента представляет ноль, один или несколько символов. Подчеркивание представляет собой одно целое число или символ. Эти символы могут быть использованы в комбинации.

Синтаксис

Базовый синтаксис % и _ выглядит следующим образом:

SELECT FROM table_name
WHERE column LIKE 'XXXX%'

или

SELECT FROM table_name
WHERE column LIKE '%XXXX%'

или

SELECT FROM table_name
WHERE column LIKE 'XXXX_'

или

SELECT FROM table_name
WHERE column LIKE '_XXXX'

или

SELECT FROM table_name
WHERE column LIKE '_XXXX_'

 

Вы можете объединить N число условий с помощью операторов AND или OR. Здесь XXXX может быть любым числовым или строковым значением.

Пример

Следующая таблица содержит несколько примеров, показывающих, часть WHERE, имеющий LIKE с комбинациями знаков «_» «%»

Sr.No. Заявление и описание
1 WHERE SALARY LIKE ‘200%’

Находит все значения, которые начинаются с 200.

2 WHERE SALARY LIKE ‘%200%’

Находит все значения, которые имеют 200 в любом положении.

3 WHERE SALARY LIKE ‘_00%’

Находит все значения, которые имеют 00 во второй и третьей позиции.

4 WHERE SALARY LIKE ‘2_%_%’

Находит все значения, которые начинаются с 2, и по меньшей мере, 3-х символов в длину.

5 WHERE SALARY LIKE ‘%2’

Находит любые значения, которые заканчиваются на цифру 2.

6 WHERE SALARY LIKE ‘2%3’

Находит любые значения, которые имеют 2 во втором положении и в конце значение 3.

7 WHERE SALARY LIKE ‘2___3’

Находит любые значения в пять-значным числом, которые начинаются на 2 и заканчивается на 3.

Возьмем реальный пример, рассмотрим таблицу клиентов, имеющих записи, как показано ниже.

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Maxim    |  35 | Moscow    | 21000.00 |
|  2 | AndreyEx |  38 | Krasnodar | 55500.00 |
|  3 | Oleg     |  33 | Rostov    | 34000.00 |
|  4 | Masha    |  35 | Moscow    | 31500.00 |
|  5 | Ruslan   |  34 | Omsk      | 43000.00 |
|  6 | Dima     |  32 | SP        | 45000.00 |
|  7 | Roma     |  34 | SP        | 10000.00 |
+----+----------+-----+-----------+----------+

 

Ниже приведен пример, который будет отображать все записи из таблицы клиентов, где SALARY начинается с 4.

SQL> SELECT * FROM CUSTOMERS
WHERE SALARY LIKE '4%';

 

Это выдаст следующий результат:

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ruslan   |  34 | Omsk      | 43000.00 |
|  3 | Dima     |  32 | SP        | 45000.00 |
+----+----------+-----+-----------+----------+

 

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

SQL LIKE - дофабрика

SQL WHERE LIKE Wildcard

WHERE LIKE определяет, соответствует ли символьная строка шаблону .

WHERE LIKE поддерживает два варианта сопоставления с подстановочными знаками: % и _ .

Используйте WHERE LIKE, если известен только фрагмент текстового значения.

Проблема: Перечислите все продукты, расфасованные в банки.

скопировано в буфер обмена

 ВЫБРАТЬ *
  ОТ ПРОДУКТА
 ГДЕ Пакет КАК '% jars%'
 
  ВЫБРАТЬ *
  ОТ ПРОДУКТА
 ГДЕ Пакет КАК '% jars%'
  
Попробуйте вживую

LIKE синтаксис.

ВЫБЕРИТЕ имена столбцов
  ОТ имя-таблицы
 ГДЕ имя-столбца LIKE value
 

Подстановочные знаки разрешены в значении : % (процент) и _ (подчеркивание).

  • % (процент) соответствует любой строке, содержащей ноль или более символов.
  • _ (подчеркивание) соответствует любому одиночному символу.

SQL ГДЕ КАК%

ПРОДУКТ
Идентификатор
Название продукта
Идентификатор поставщика
Цена единицы
Упаковка
Исчезла

Задача : Перечислите все продукты с названиями, начинающимися с «Ca».

скопировано в буфер обмена

 SELECT Id, ProductName, UnitPrice, Package
  ОТ ПРОДУКТА
 ГДЕ ProductName КАК "Ca%"
 
  SELECT Id, ProductName, UnitPrice, Package
  ОТ ПРОДУКТА
 ГДЕ ProductName КАК "Ca%"
  
Попробуйте вживую

Результат: 2 записи.

Id Название продукта Цена за единицу Пакет
18 Карнарвон Тайгерс 62.50 16 кг уп.
60 Камамбер Пьеро 34,00 Патроны 15-300 г

SQL ГДЕ НРАВИТСЯ _

ПРОДУКТ
Идентификатор
Название продукта
Идентификатор поставщика
Цена единицы
Упаковка
Исчезла

Задача : перечислить все продукты, начинающиеся с «Ча» или «Чан» и иметь еще один символ.

скопировано в буфер обмена

 SELECT Id, ProductName, UnitPrice, Package
  ОТ ПРОДУКТА
 ГДЕ ProductName КАК 'Cha_' ИЛИ ​​ProductName КАК 'Chan_'
 
  SELECT Id, ProductName, UnitPrice, Package
  ОТ ПРОДУКТА
 ГДЕ ProductName КАК 'Cha_' ИЛИ ​​ProductName КАК 'Chan_'
  
Попробуйте вживую

Результат: 2 записи.

Id Название продукта Цена за единицу Пакет
1 Чай 18.00 10 коробок x 20 пакетов
2 Чанг 19,00 Бутылки 24-12 унций

SQL Like: введение и обзор логического оператора

SQL Like - это логический оператор, который используется для определения того, соответствует ли конкретная строка символов заданному шаблону.Обычно он используется в предложении Where для поиска указанного шаблона в столбце.

Этот оператор может быть полезен в случаях, когда нам нужно выполнить сопоставление с образцом вместо равенства или неравенства. SQL Like используется, когда мы хотим вернуть строку, если конкретная символьная строка соответствует указанному шаблону. Шаблон может представлять собой комбинацию обычных символов и подстановочных знаков.

Чтобы вернуть строку назад, обычные символы должны точно соответствовать символам, указанным в строке символов.Подстановочные знаки могут быть сопоставлены с произвольными частями символьной строки.

Давайте воспользуемся образцом базы данных AdventureWorks и рассмотрим несколько различных операторов SQL Like с подстановочными знаками «%» и «_».

Использование подстановочного знака% (представляет ноль, один или несколько символов)

Приведенный ниже запрос возвращает все телефонные номера с кодом зоны «415» в таблице «PersonPhone»:

ВЫБРАТЬ стр.FirstName, p.LastName, ph.PhoneNumber

ОТ Person.PersonPhone AS ph

INNER JOIN Person.Person AS p

НА тел. автор: p.LastName;

ГО

Обратите внимание, что в предложении Where указан символ «415%». Это означает, что SQL Server будет искать число 415, за которым следует любая строка из нуля или более символов.Вот результат:

Оператор Not logic меняет значение любого логического выражения на противоположное. Итак, если мы просто укажем Not like с подстановочным знаком «%» в предложении SQL Like, добавим одно дополнительное условие и поместим его в тот же оператор, что и выше, мы должны получить такой запрос:

ВЫБРАТЬ p.FirstName, p.LastName, ph.PhoneNumber

ОТ Лиц.PersonPhone AS ph

ВНУТРЕННЕЕ СОЕДИНЕНИЕ Person.Person AS p

НА тел. BusinessEntityID = p.BusinessEntityID

ГДЕ ph.PhoneNumber НЕ похож на '415%' И p.FirstName = 'Gail'

ORDER BY p.LastName;

ГО

На этот раз запрос вернул все записи в таблице «PersonPhone», которые имеют коды городов, отличные от 415:

Кроме того, предположим, что мы хотим найти все записи, в которых имя содержит «ssa».Мы можем использовать запрос ниже:

ВЫБРАТЬ p.FirstName, p.LastName

FROM Person.Person AS p

WHERE LastName LIKE '% ssa%'

ORDER BY p.LastName;

ГО

Обратите внимание, что, используя '%' до и после «ssa», мы говорим SQL Server найти все записи, в которых «Person.Person» имеет символы «ssa», и не имеет значения, какие другие символы находятся до и после « ssa »:

Использование подстановочного знака «_» (представляет один символ)

Знак подчеркивания SQL Like e.грамм. „Используется, когда мы хотим проверить один символ, который может быть чем угодно, и предоставить остальные символы для нашего соответствия.

Предположим, что если мы хотим вернуть все записи, в которых первый символ таблицы «Имя» может быть любым, а остальные должны быть «en». Используйте запрос ниже:

SELECT p.FirstName,

p.MiddleName

FROM Person.Person p

WHERE p.FirstName LIKE '_en';

ГО

Вот результат:

Обратите внимание, что комбинация подстановочных знаков также может использоваться в конце шаблона поиска. Например, чтобы вернуть все телефонные номера с кодом города, начинающимся с 6 и заканчивающимся на 2 в таблице «PersonPhone», используйте следующий запрос:

ВЫБРАТЬ стр.PhoneNumber

ОТ Person.PersonPhone pp

ГДЕ pp.PhoneNumber КАК '6_2%'

GO

Обратите внимание, что подстановочный знак «%» используется после символа подчеркивания, поскольку код города является первой частью телефонного номера, а дополнительные символы существуют после в значении столбца:

Использование квадратных скобок [] (любой отдельный символ в указанном диапазоне [a-t] или набор [abc])

Оператор SQL Like с квадратными скобками используется, когда мы хотим иметь диапазон.Допустим, мы хотим найти все строки, в которых первый символ «Имя» начинается с [a-f]. Используйте запрос ниже:

ВЫБЕРИТЕ BusinessEntityID, FirstName, LastName

FROM Person.Person

WHERE FirstName LIKE '[a-f]%';

ГО

Как видно, мы использовали диапазон [a-f]%. Это означает, что нужно вернуть первый символ от a до f, а после этого любые символы подойдут, потому что после этого мы использовали «%»:

Чтобы вернуть любой отдельный символ в наборе, используйте приведенный ниже пример для поиска сотрудников в таблице «Человек» с именем Шерил или Шерил:

ВЫБРАТЬ BusinessEntityID, FirstName, LastName

FROM Person.Человек

ГДЕ Имя LIKE '[CS] heryl';

ГО

В этом случае этот запрос вернет только Шерил, но он также вернул бы Шерил, если бы у нас были какие-либо записи в базе данных:

Вот еще один пример, когда у нас действительно смешанные результаты:

SELECT LastName, FirstName

FROM Person.] квадратные скобки (любой отдельный символ за пределами указанного диапазона [a-t] или набора [abc])

Как вы могли догадаться, это противоположность предыдущему использованию оператора SQL Like с квадратными скобками. Допустим, мы хотим вернуть все записи, в которых первый символ «Имя» не начинается с [от a до f]:

ВЫБРАТЬ BusinessEntityID, FirstName, LastName

FROM Person.а-е]% ';

ГО

Обратите внимание, что он вернул только те записи, которые не начинаются с какого-либо символа от a до f:

В данном примере, допустим, мы хотим получить все записи, в которых «FirstName» не начинается с a, d, j. Мы можем использовать запрос ниже:

ВЫБРАТЬ BusinessEntityID, FirstName, LastName

FROM Person.adj]% ';

ГО

Вот результат:

Использование escape-предложения

Это один из предикатов типа SQL, который используется для указания escape-символа. В приведенном ниже запросе используется предложение Escape и escape-символ:

1

2

3

4

5

6

7

8

9

10

11

12

13

140004

14

18

USE tempdb;

GO

ЕСЛИ СУЩЕСТВУЕТ (ВЫБЕРИТЕ TABLE_NAME

FROM INFORMATION_SCHEMA.ТАБЛИЦЫ

WHERE TABLE_NAME = 'mytbl2')

DROP TABLE mytbl2;

GO

USE tempdb;

GO

СОЗДАТЬ ТАБЛИЦУ mytbl2 (c1 SYSNAME);

GO

ВСТАВЬТЕ В mytbl2

ЗНАЧЕНИЯ («Скидка 10-15%»), («Скидка 0,10–15%»);

GO

SELECT c1

FROM mytbl2

WHERE c1 LIKE '% 10-15 @% off%' ESCAPE '@';

ГО

Он возвращает точную строку символов 10-15% в столбце c1 таблицы mytbl2:

Я надеюсь, что эта статья об операторе SQL Like была информативной, и благодарю вас за то, что вы ее прочитали.


Боян, он же «Бокси», выпускник AP в области ИТ-технологий, специализирующийся на сетях и электронных технологиях Копенгагенской школы дизайна и технологий, является аналитиком программного обеспечения с опытом в области обеспечения качества, поддержки программного обеспечения, пропаганды продуктов и взаимодействия с пользователями.

Он много писал о SQL Shack и ApexSQL Solution Center по самым разным темам, от клиентских технологий, таких как разрешение 4K и тематика, обработки ошибок до стратегий индексации и мониторинга производительности.

Боян работает в ApexSQL в Нише, Сербия, как неотъемлемая часть команды, занимающейся проектированием, разработкой и тестированием следующего поколения инструментов баз данных, включая MySQL и SQL Server, а также автономных инструментов и интеграции с Visual Studio, SSMS. и VSCode.

Подробнее о Бояне на LinkedIn

Просмотреть все сообщения Бояна Петровича

Последние сообщения Бояна Петровича (посмотреть все)

Обзор оператора SQL LIKE

В этой статье мы узнаем, как использовать оператор SQL LIKE в SQL Server, используя регулярные выражения для поиска и / или управления текстом.Мы начнем с изучения символов и базового синтаксиса использования регулярных выражений с подстановочными знаками. Мы будем использовать наборы символов и выражения повторения для создания гибких шаблонов сопоставления, и попутно изучим различные способы использования оператора LIKE. И, наконец, в последней части раздела мы рассмотрим некоторые из наиболее распространенных и наиболее полезных примеров регулярных выражений.

SQL - наиболее часто используемый язык для работы с базами данных. Когда вы разрабатываете отчет, используете бизнес-аналитику или какой-либо инструмент отчетности, программное обеспечение почти наверняка незаметно создает SQL-запрос, который выполняется в базе данных и возвращает выбранные вами данные.Когда мы ищем конкретные данные или данные, соответствующие определенным критериям, предложение where предоставляет необходимый набор инструментов. Это дает возможность запрашивать определенные строки, которые мы ищем, а не всю таблицу.

Предварительные требования

Загрузите базу данных AdventureWorks2014 здесь, чтобы протестировать следующие образцы T-SQL.

Начало работы

Давайте пройдемся по операторам SQL, используя ключевое слово LIKE и подстановочные знаки.Итак, приступим к изучению оператора SQL LIKE.

Примеры использования подстановочных знаков SQL LIKE

Регулярные выражения - это шаблоны для описания сопоставления строк в предложении WHERE. Многие языки программирования поддерживают регулярные выражения, синтаксис которых немного отличается от синтаксиса оператора LIKE. В этой статье, когда мы говорим о регулярных выражениях, мы имеем в виду шаблоны, используемые с оператором SQL LIKE.

В следующей таблице представлены четыре разных символа подстановки.Вы также можете обратиться к статье Строковые функции SQL для Data Munging (Wrangling) за дополнительными примерами.

Подстановочные знаки

Описание

%

Любая строка, содержащая ноль или более символов в шаблоне поиска.]

Поиск по одному символу за пределами указанного диапазона

Использование SQL LIKE с подстановочным знаком «%»

Следующий оператор SQL возвращает все строки таблицы person, где их фамилии начинаются с буквы A.Давайте укажем букву «A», первый символ, который должен быть в строке, а затем используем подстановочный знак «%», процент.

ВЫБРАТЬ ТОП 10 *

ОТ Person.Person

WHERE firstname LIKE 'A%';

Вы увидите результат, в котором перечислены 10 верхних строк таблицы person, где имя начинается с A, а остальная часть символа неизвестна.

Использование SQL LIKE с подстановочным знаком «_»

Подстановочный знак, подчеркивание, соответствует любому одиночному символу. Следующая инструкция SQL находит все телефонные номера, код зоны которых начинается с 7 и заканчивается на 8 в столбце номер телефона . Мы также добавили подстановочный знак% в конце шаблона поиска, поскольку нас не интересуют остальные строковые значения.

ВЫБРАТЬ стр.FirstName,

p.LastName,

PhoneNumber

FROM Person.PersonPhone AS ph

INNER JOIN Person.Person AS p ON ph.BusinessEntityID = p.BusinessEntityID

ГДЕ тел. ПО p.LastName;

Выходные данные показывают, что указаны коды городов, которые начинаются с 7 и заканчиваются на 8.

Использование SQL LIKE с подстановочными знаками []

Квадратные скобки e.g [] позволяет нам идентифицировать несколько одиночных символов, которые будут в этой конкретной позиции. Например, скажем, чтобы перечислить все строки, в которых первые имена третьего символа начинаются с I или K. Вместо написания нескольких условий LIKE мы можем поместить набор сопоставления с образцом в третью позицию и закрыть его в квадрате. Механизм запросов сначала ищет «I», а затем - «K».

Давайте выполним следующий оператор SQL

ВЫБРАТЬ стр.FirstName,

p.LastName,

PhoneNumber

FROM Person.PersonPhone AS ph

INNER JOIN Person.Person AS p ON ph.BusinessEntityID = p.BusinessEntityID

ГДЕ тел. фамилия как «Ba [ik]%»

ЗАКАЗАТЬ ПО p.LastName;

Вышеупомянутый запрос можно переписать с помощью условия ИЛИ. Это больше похоже на условие ИЛИ.

ВЫБРАТЬ стр.FirstName,

p.LastName,

PhoneNumber

FROM Person.PersonPhone AS ph

INNER JOIN Person.Person AS p ON ph.BusinessEntityID = p.BusinessEntityID

WHERE ph.Phone 7_8 LIKE .lastname, например «Bai%» или p.lastname, например, «Bak%»)

ЗАКАЗАТЬ ПО p.LastName;

На выходе мы видим, что перечислены фамилии, в которых третий символ - «I» или «k».»

Следующий оператор SQL отображает все строки, в которых нет буквы, начинающейся с A – D, в первом символе их фамилии.a-d]% '

ЗАКАЗАТЬ ПО p.lastname;

Теперь, если я выполню вышеуказанный запрос, мы увидим, что все возвращаемые имена не содержат A, B, C или D в качестве первого символа.

Использование SQL NOT LIKE с подстановочными знаками []

Следующий оператор SQL находит всех лиц, у которых столбец имени содержит более 3 символов.

ВЫБРАТЬ DISTINCT

имя

ОТ Лиц.Человек

ГДЕ имя НЕ НРАВИТСЯ '[a-z] [a-z] [a-z]';

В выводе перечислены только те имена, у которых длина имени больше 3

Использование SQL LIKE с предложением ESCAPE

В следующем операторе SQL предложение ESCAPE используется для экранирования символа «!», Чтобы отрицать значение «%», чтобы найти строку «100% Free» в столбце col1 временной таблицы.

ТАБЛИЦА УДАЛЕНИЯ, ЕСЛИ СУЩЕСТВУЕТ temp;

CREATE TABLE temp (col1 VARCHAR (100));

GO

INSERT INTO temp

VALUES («ApexSQL Refactor - это на 100% бесплатный инструмент форматирования SQL»), («Задание ApexSQL только сегодня со скидкой 10-15%»);

GO

SELECT *

FROM TEMP;

SELECT *

FROM temp

WHERE col1 LIKE '% 100!% Free%' ESCAPE '!';

ГО

В выводе перечислены только те значения, для которых шаблон поиска «100% Free» соответствует выражению col1.

Использование SQL LIKE с оператором CASE

Следующий оператор SQL извлекает всех сотрудников, у которых номера телефонов имеют формат из трех-трех-четырех цифр с дефисами между ними ( 999-999-9999 ). Затем образец сравнивается со столбцом номер телефона для получения внутренней или международной категории.

Выражение case оценивается для конкретного шаблона, чтобы получить тип категории телефона.

SELECT p.FirstName,

p.LastName,

PhoneNumber,

CASE WHEN ph.PhoneNumber LIKE '[0-9] [0-9] [0-9] - [0-9] [0- 9] [0-9] - [0-9] [0-9] [0-9] [0-9] 'затем «Внутренний номер телефона»

ELSE «Международный номер телефона»

КОНЕЦ Номер телефона

ОТ Person.PersonPhone AS тел.

ВНУТРЕННЕЕ СОЕДИНЕНИЕ Person.Person AS p ON тел. BusinessEntityID = p.BusinessEntityID

ЗАКАЗАТЬ ПО p.LastName;

В выводе мы видим, что номер классифицируется как внутренний или международный. Столбец номер телефона вычисляется оператором LIKE с использованием квадратных скобок. Число от нуля до девяти в первой позиции символа оценивается на соответствие шаблону от нуля до девяти, любое число от нуля до девяти во второй позиции символа и третьем, а затем четвертая позиция символа должна быть тире, и аналогичная логика применяется к остальным персонажей.

Использование SQL LIKE с динамическим SQL

Следующий оператор SQL возвращает всех сотрудников, у которых фамилия совпадает с шаблоном Barb. Шаблон создается динамически и сравнивается с выражением.

DECLARE @ELastName VARCHAR (20) = 'Барб';

ВЫБРАТЬ п. Имя,

п.LastName,

a.City

ОТ Person.Person p

JOIN Person.Address a ON p.BusinessEntityID = a.AddressID

ГДЕ p.LastName LIKE '%' + @ ELastName + '%';

Выходной список совпадающих строк для указанного шаблона Barb

Примечание. По умолчанию CHAR вставляет завершающие пробелы в зависимости от длины поля. Используйте RTRIM для подавления конечных пробелов, если вы используете тип данных char.

В следующем операторе SQL поле @eLastName имеет тип данных char. Вы можете увидеть использование функции RTRIM для обрезки конечных пробелов.

DECLARE @ELastName CHAR (20) = 'Барб';

SELECT p.FirstName,

p.LastName,

a.City

FROM Person.Person p

JOIN Person.Address a ON p.BusinessEntityID = a.AddressID

WHERE p.Фамилия LIKE '%' + RTRIM (@ELastName) + '%';

Использование SQL Like с оператором IF

В следующем операторе SQL входное значение оценивается для определенного шаблона в предложении условия с помощью оператора IF.

DECLARE @RuleName NVARCHAR (MAX) = 'SQL Sever 2019 CTP доступен для предварительного просмотра';

IF @RuleName LIKE 'SQL Sever [0-9]% CTP доступен для предварительного просмотра'

PRINT 'valid input good!';

ELSE

PRINT «недействительный товар!»;

Входная строка оценивается для определенных шаблонов с использованием SQL, подобного выражению с подстановочными знаками, и возвращает допустимую входную строку.], которые доступны с оператором SQL LIKE. Это отличный метод поиска для сопоставления строки символов с указанными шаблонами или в тех случаях, когда мы не совсем уверены в том, что вы ищете, иначе говоря, нечеткий поиск. Доступные подстановочные знаки делают оператор LIKE более гибким. Надеюсь, вам понравилась эта статья об операторе SQL LIKE в SQL Server. Не стесняйтесь задавать любые вопросы в комментариях ниже.


Я технолог по базам данных с более чем 11-летним богатым практическим опытом работы с технологиями баз данных.Я сертифицированный специалист Microsoft и имею степень магистра компьютерных приложений.

Моя специальность заключается в разработке и внедрении решений высокой доступности и кроссплатформенной миграции БД. В настоящее время работают над технологиями SQL Server, PowerShell, Oracle и MongoDB.

Посмотреть все сообщения от Prashanth Jayaram

Последние сообщения от Prashanth Jayaram (посмотреть все)

SQL LIKE | Базовый SQL

Начиная с этого места? Этот урок является частью полного руководства по использованию SQL для анализа данных.Проверьте начало.

В этом уроке мы рассмотрим:

Оператор SQL LIKE

LIKE - это логический оператор в SQL, который позволяет сравнивать похожие значения, а не точные.

В этом примере результаты из набора данных Billboard Music Charts будут включать строки, для которых «группа» начинается с «Snoop», за которым следует любое количество и выбор символов.

Запустите код, чтобы увидеть, какие результаты возвращаются.

  ВЫБРАТЬ *
  ИЗ tutorial.billboard_top_100_year_end
 ГДЕ "группа" КАК "Snoop%"
  

Примечание: «группа» появляется в цитатах выше, потому что ГРУППА на самом деле является именем функции в SQL. Двойные кавычки (в отличие от одинарных: ') указывают на то, что вы имеете в виду имя столбца «группа» , а не функцию SQL. Как правило, двойные кавычки вокруг слова или фразы указывают на то, что вы имеете в виду это имя столбца.

Подстановочные знаки и ILIKE

% , использованное выше, представляет любой символ или набор символов. В этом случае % упоминается как «подстановочный знак». В типе SQL, который использует Mode, LIKE чувствителен к регистру, что означает, что вышеуказанный запрос будет захватывать только те совпадения, которые начинаются с заглавной «S» и строчной буквы «noop». Чтобы игнорировать регистр при сопоставлении значений, вы можете использовать команду ILIKE :

  ВЫБРАТЬ *
  ИЗ учебника.billboard_top_100_year_end
 ГДЕ "группа" ILIKE 'snoop%'
  

Вы также можете использовать _ (одинарное подчеркивание) для замены отдельного символа:

  ВЫБРАТЬ *
  ИЗ tutorial.billboard_top_100_year_end
 ГДЕ художник ILIKE 'dr_ke'
  

Отточите свои навыки SQL

Практическая задача

Напишите запрос, который возвращает все строки, для которых Ludacris был членом группы.

Попробуй это Посмотреть ответ

Практическая задача

Напишите запрос, который возвращает все строки, для которых первый исполнитель, указанный в группе, имеет имя, начинающееся с «DJ».

Попробуй это Посмотреть ответ

Оператор SQL LIKE - w3resource

НРАВИТСЯ Оператор

LIKE - это стандартный оператор ANSI / ISO для сравнения значения столбца с другим значением столбца или строкой в ​​кавычках. Возвращает либо 1 (ИСТИНА), либо 0 (ЛОЖЬ)

.

Оператор SQL LIKE применяется только к полю типа CHAR или VARCHAR, чтобы соответствовать шаблону.

Чтобы соответствовать шаблону из слова, с оператором LIKE могли использоваться специальные символы и подстановочные знаки.

Оператор LIKE можно использовать в любом допустимом операторе SQL, например ВЫБРАТЬ, ВСТАВИТЬ, ОБНОВЛЕНИЕ или УДАЛЯТЬ.

Синтаксис:

 ВЫБРАТЬ [* | column_list]
FROM <имя_таблицы> WHERE выражение [НЕ] LIKE шаблон
[ESCAPE escape_sequence]
 

Параметры:

Имя Описание
список_столбец Список столбцов таблицы.
имя_таблицы Имя таблицы.
имя_столбца Название столбца, который будет участвовать в действии с оператором LIKE.
ГДЕ Проверяет, соответствует ли выражение шаблону. И выражение, и шаблон могут быть любым допустимым выражением и оцениваются как строки. Используйте NOT LIKE, чтобы проверить, не соответствует ли строка шаблону.
В шаблонах могут использоваться следующие подстановочные знаки SQL:

Подстановочные знаки SQL :

Подстановочные знаки SQL можно использовать для поиска данных в таблице.

Подстановочные знаки SQL используются с оператором SQL LIKE.

Логический оператор NOT в операторе select может использоваться как оператор NOT LIKE с подстановочными знаками.

В SQL используются подстановочные знаки:

Подстановочные знаки Описание
% Знак процента (%) представляет собой последовательность из 0 (нуля) или более символов.
Подчеркивание (_) Знак подчеркивания (_) представляет собой одиночный символ.charlist] или [! charlist] Он представляет собой любой одиночный символ, кроме charlist

Графическое представление: Оператор SQL LIKE


Примеры: оператор SQL LIKE

Процент подстановочных знаков SQL (%)

Образец таблицы: заказчик

Чтобы получить cust_code, cust_name, cust_city и cust_country из таблицы customer со следующим условием -

1. «cust_name» должно начинаться с буквы «S»,

можно использовать следующий оператор SQL:

  ВЫБЕРИТЕ cust_code, cust_name, cust_city, cust_country
ОТ заказчика
ГДЕ cust_name LIKE 'S%';
  

Выход:

 CUST_CODE CUST_NAME CUST_CITY CUST_COUNTRY
---------- -------------------- --------------- ----- --------------
C00015 Стюарт Лондон Великобритания
C00005 Сасикант Мумбаи Индия
C00006 Шилтон Торенто Канада
C00017 Шринивас Бангалор Индия
C00012 Стивен Сан-Хосе США
C00011 Сундария Ченнаи Индия
 

Процент подстановочных знаков SQL (%) с логическим НЕ

Пример таблицы: агенты

Чтобы получить все столбцы из таблицы «агенты» с условием -

1."имя_агента" не начинается с буквы "М",

можно использовать следующий оператор SQL:

  ВЫБРАТЬ *
ОТ агентов
ГДЕ имя_агента НЕ НРАВИТСЯ "M%";
  

Выход:

 AGENT_CODE AGENT_NAME КОМИССИЯ РАБОЧЕЙ_ЗОНЫ PHONE_NO COUNTRY
---------- -------------------- --------------- ----- ----- --------------- --------
A003 Алекс Лондон .13 075-12458969
A001 Subbarao Bangalore.14 077-12346674
A009 Бенджамин Хэмпшер .11 008-22536178
A007 Рамасундар Бангалор .15 077-25814763
A008 Элфорд Нью-Йорк .12 044-25874365
A011 Рави Кумар Бангалор .15 077-45625874
A010 Сантакумар Ченнаи .14 007-22388644
A012 Люсида Сан-Хосе .12 044-52981425
A005 Андерсон Брисбан.13 045-21447739
A004 Иван Торенто .15 008-22544166
 

Равно (=) по сравнению с КАК

Оператор равенства (=) является оператором сравнения и используется для проверки равенства двух чисел или выражений. Например:

  ВЫБРАТЬ *
ОТ агентов
ГДЕ комиссия = .11;
  

Оператор LIKE проверяет, соответствует ли конкретная строка символов заданному шаблону. Например:

  ВЫБРАТЬ *
ОТ агентов
WHERE agent_name LIKE 'Sant%'  

LIKE обычно используется только со строками, а equals (=) используется для точного сопоставления и кажется более быстрым.

Пример: подстановочные знаки SQL, подчеркивание (_)

Символ подчеркивания (_) представляет отдельный символ, соответствующий шаблону из слова или строки. Для соответствия шаблону из нескольких символов можно использовать более одного (_) символа подчеркивания.

Образец таблицы: заказчик

Чтобы получить cust_code, cust_name, cust_city и cust_country из таблицы customer со следующими условиями -

1. "cust_name" должно начинаться с буквы "R",

2.третья буква "cust_name" должна быть "m",

3. и вторая буква "cust_name" может быть любой,

можно использовать следующий оператор SQL:

  ВЫБЕРИТЕ cust_code, cust_name, cust_city, cust_country
ОТ заказчика
ГДЕ cust_name LIKE 'R_m%';
  

Выход:

 CUST_CODE CUST_NAME CUST_CITY CUST_COUNTRY
---------- -------------------- --------------- ----- --------------
C00007 Раманатан Ченнаи Индия
C00009 Рамеш Мумбаи Индия
 

Подстановочные знаки SQL подчеркивание (_) несколько символов

Образец таблицы: заказчик

Чтобы получить cust_code, cust_name, cust_city и cust_country из таблицы customer со следующими условиями -

1.первые три буквы "cust_name" могут быть любой буквой

2. четвертая буква «cust_name» должна быть «l»

3. а остальные могут быть любыми

можно использовать следующий оператор SQL:

  ВЫБЕРИТЕ cust_code, cust_name, cust_city, cust_country
ОТ заказчика
ГДЕ cust_name LIKE '___ l%';
  

Выход:

 CUST_CODE CUST_NAME CUST_CITY CUST_COUNTRY
---------- -------------------- --------------- ----- -------------
C00023 Карл Лондон Великобритания
C00006 Шилтон Торенто Канада
 

Подстановочные знаки SQL, подчеркивание (_) для определенной длины

Образец таблицы: заказчик

Чтобы получить cust_code, cust_name, cust_city и cust_country из таблицы customer со следующими условиями -

1.первые три буквы "cust_name" могут быть любой буквой

2. четвертая буква «cust_name» должна быть «l»

3. и строка должна состоять из 4 букв

можно использовать следующий оператор SQL:

  ВЫБЕРИТЕ cust_code, cust_name, cust_city, cust_country
ОТ заказчика
ГДЕ cust_name LIKE '___l';
  

Выход:

 CUST_CODE CUST_NAME CUST_CITY CUST_COUNTRY
---------- -------------------- --------------- ----- ---------------
C00023 Карл Лондон Великобритания
 

Пример: подстановочные знаки SQL [charlist]

[список символов] WILDCARDS используются для представления любого отдельного символа в списке символов.abi]% ';

Пример: подстановочные знаки SQL [! Charlist]

Пример таблицы: агенты

Чтобы получить все строки из таблицы «агенты» с условием -

1. «имя_агента» не должно начинаться с буквы «a», «b» или «i»,

можно использовать следующий оператор SQL:

  ВЫБРАТЬ *
ОТ агентов
ГДЕ имя_агента LIKE '[! Abi]%';  

См. Нашу базу данных моделей

Практические упражнения SQL

Хотите улучшить статью выше? Публикуйте свои заметки / комментарии / примеры через Disqus.

Предыдущая: СУЩЕСТВУЕТ
Следующая: Подчеркивание (_)

PostgreSQL LIKE - запрос данных с использованием методов сопоставления с образцом

Резюме : в этом руководстве вы узнаете, как использовать операторы PostgreSQL LIKE и ILIKE для запроса данных с использованием сопоставления с образцом.

Введение в PostgreSQL Оператор LIKE

Предположим, вы хотите найти покупателя, но не помните точно его имя. Однако вы просто помните, что ее имя начинается примерно с Jen .

Как найти конкретного покупателя из базы данных? Вы можете найти клиента в таблице customer , просмотрев столбец с именем, чтобы узнать, есть ли какое-либо значение, которое начинается с Jen . Если в таблице клиентов много строк, это займет много времени.

К счастью, вы можете использовать оператор PostgreSQL LIKE , чтобы сопоставить имя клиента со строкой вроде этого запроса:

 

SELECT имя, фамилия ИЗ покупатель КУДА first_name КАК 'Jen%';

Язык кода: SQL (язык структурированных запросов) (sql)

Обратите внимание, что предложение WHERE содержит специальное выражение: first_name , оператор LIKE и строку, содержащую знак процента ( % ).Строка 'Jen%' называется шаблоном.

Запрос возвращает строки, значения которых в столбце first_name начинаются с Jen и могут сопровождаться любой последовательностью символов. Этот метод называется сопоставлением с образцом.

Вы создаете шаблон, комбинируя буквальные значения с подстановочными знаками, и используете оператор LIKE или NOT LIKE для поиска совпадений. PostgreSQL предоставляет вам два подстановочных знака:

  • Знак процента (% ) соответствует любой последовательности из нуля или более символов.
  • Знак подчеркивания ( _ ) соответствует любому одиночному символу.

Синтаксис оператора PostgreSQL LIKE выглядит следующим образом:

 

значение LIKE pattern

Язык кода: SQL (язык структурированных запросов) (sql)

Выражение возвращает истину, если значение соответствует образец .

Чтобы отрицать оператор LIKE , используйте оператор NOT следующим образом:

 

значение НЕ КАК шаблон

Язык кода: SQL (язык структурированных запросов) (sql)

NOT LIKE Оператор возвращает истину, если значение не соответствует шаблону .

Если шаблон не содержит подстановочных знаков, оператор LIKE ведет себя как оператор равенства ( = ).

Оператор LIKE в PostgreSQL - примеры сопоставления с образцом

Давайте рассмотрим несколько примеров использования оператора LIKE

PostgreSQL LIKE examples

См. Следующий пример:

 

SELECT 'foo' НРАВИТСЯ 'foo', 'foo' НРАВИТСЯ 'f%', 'foo' НРАВИТСЯ '_o_', 'bar' LIKE 'b_';

Язык кода: SQL (язык структурированных запросов) (sql)

Как это работает.

  • Первое выражение возвращает истину, поскольку шаблон foo не содержит подстановочных знаков, поэтому оператор LIKE действует как оператор равенства ( = ).
  • Второе выражение возвращает истину, поскольку оно соответствует любой строке, которая начинается с буквы f и за которой следует любое количество символов.
  • Третье выражение возвращает истину, потому что шаблон ( _o_ ) соответствует любой строке, которая начинается с любого одиночного символа, за которым следует буква o и заканчивается любым одиночным символом.
  • Четвертое выражение возвращает ложь, потому что шаблон b_ соответствует любой строке, которая начинается с буквы b и за которой следует любой одиночный символ.

Можно использовать подстановочные знаки в начале и / или конце шаблона.

Например, следующий запрос возвращает клиентов, имя которых содержит строку er , например Jenifer , Kimberly и т. Д.

 

SELECT имя, фамилия ИЗ покупатель КУДА first_name LIKE '% er%' СОРТИРОВАТЬ ПО имя;

Язык кода: SQL (язык структурированных запросов) (sql)

Вы можете объединить процент (% ) с подчеркиванием ( _ ), чтобы построить шаблон, как в следующем примере:

 

SELECT имя, фамилия ИЗ покупатель КУДА first_name LIKE '_her%' СОРТИРОВАТЬ ПО имя;

Язык кода: SQL (язык структурированных запросов) (sql)

Шаблон _her% соответствует любой строке, которая:

  • Начинается с любого одиночного символа ( _ )
  • И за ним следует литерал строка ее .
  • И заканчивается любым количеством символов.

Возвращенные имена: C ее yl, S ее ri, S ее ry и T ее asa.

PostgreSQL NOT LIKE examples

В следующем запросе используется оператор NOT LIKE для поиска клиентов, чьи имена не начинаются с Jen :

 

SELECT имя, фамилия ИЗ покупатель КУДА first_name НЕ НРАВИТСЯ "Jen%" СОРТИРОВАТЬ ПО first_name

Язык кода: SQL (язык структурированных запросов) (sql)

PostgreSQL расширения оператора LIKE

PostgreSQL поддерживает оператор ILIKE , который работает как оператор LIKE .Кроме того, оператор ILIKE сопоставляет значение без учета регистра. Например:

 

ВЫБРАТЬ имя, фамилия ИЗ покупатель КУДА first_name ILIKE 'BAR%';

Язык кода: SQL (язык структурированных запросов) (sql)

Шаблон BAR% соответствует любой строке, которая начинается с BAR , Bar , BaR и т. Д. Если вы используете LIKE , запрос не вернет ни одной строки.

PostgreSQL также предоставляет некоторые операторы, которые действуют как LIKE, NOT LIKE, ILIKE и NOT ILIKE , как показано ниже:

Operator Equivalent
~~ LIKE
~~ * ILIKE
! ~~ НЕ НРАВИТСЯ
! ~~ * НЕ ILIKE

В этом руководстве вы узнали, как использовать PostgreSQL Операторы LIKE и ILIKE для запроса данных с использованием сопоставления с образцом.

Было ли это руководство полезным?

Как использовать оператор сравнения LIKE в операторе SQL SELECT для MySQL

Использование оператора сравнения LIKE


Если вы не знаете точное значение для поиска, вы можете использовать оператор LIKE для поиска похожих значений. Аналогичные значения задаются шаблоном, который необходимо сопоставить. Операция сопоставления с образцом называется подстановочным знаком. поиск.

Прочтите предварительные условия для этого учебника и практических занятий, если вы еще этого не сделали.

При использовании оператора LIKE в операторе SELECT учитывайте следующие факты:

  1. Есть два подстановочных символа для сопоставления с образцом:

    Обозначение Имя персонажа Описание
    % Знак процента Соответствует любому количеству символов, включая ноль или более символов.
    _ Подчеркивание Соответствует ровно одному символу
  2. По умолчанию оператор LIKE выполняет сопоставление с шаблоном без учета регистра.См. Практику № 1.

  3. Чтобы выполнить сопоставление с учетом регистра, используйте предложение BINARY сразу после ключевого слова LIKE. См. Практику № 2 и Практику № 3.

  4. Два символа сопоставления с шаблоном можно объединить в операторе SELECT. См. Практику № 5.

  5. Когда вам нужно найти фактический символ% или _, поставьте перед ним escape-символ. Если вы не укажете escape-символ, предполагается наличие люфта (\). См. Практику № 6.

    Строка Описание
    \% Соответствует одному символу%.
    \ _ Соответствует одному символу _
  6. Вы можете указать свой собственный escape-символ с помощью предложения ESCAPE. Поместите предложение ESCAPE после предложения LIKE. См. Практику № 7.

Для большинства запросов в руководствах требуется база данных Northwind MySQL, вы можете загрузить сценарий базы данных на этой странице.

Практика №1: поиск без учета регистра с использованием оператора LIKE.

Обратите внимание, что для получения правильных результатов для Практики №1 и №2 я временно изменил название продукта Chai на чай . Это сделано для облегчения запросов, чтобы проиллюстрировать разницу между поиском без учета регистра и поиском с учетом регистра.

 
ВЫБРАТЬ ProductID, ProductName
ИЗ продуктов
ГДЕ ProductName LIKE 'C%';

ВЫБРАТЬ ProductID, ProductName
ИЗ продуктов
ГДЕ ProductName LIKE 'c%';

Два вышеуказанных запроса отображают все продукты, название которых начинается с символа C, независимо от верхнего или нижнего регистра C.Символ соответствия шаблону% представляет любое количество символов после символа C или c.

Набор результатов запроса - и запрос 1, и запрос 2 вернули точно 9 строк:

Практика №2: Поиск с учетом регистра с использованием оператора LIKE BINARY.

 
ВЫБРАТЬ ProductID, ProductName
ИЗ продуктов
ГДЕ ProductName LIKE BINARY 'C%';

В приведенном выше запросе отображаются все продукты, название которых начинается с заглавного символа C .Обратите внимание, что продукта chai нет в результат, потому что его название продукта начинается с символа нижнего регистра c, который исключается в результате пункт BINARY.

Набор результатов запроса - возвращено 8 строк. Чай нет в результате:

Практика №3: ​​Используйте оператор LIKE для поиска символов в нижнем регистре.

 

ВЫБРАТЬ ProductID, ProductName
ИЗ продуктов
ГДЕ ProductName LIKE BINARY 'c%';

В приведенном выше запросе отображаются все продукты, название которых начинается с строчного символа c .Возвращается только товар chai .

Набор результатов запроса - 1 возвращенная строка:

Практика №4: сопоставьте один символ

 

ВЫБРАТЬ ProductID, ProductName
ИЗ продуктов
ГДЕ ProductName LIKE '_ofu';

Используйте символ сопоставления с образцом _ (подчеркивание) для сопоставления любого отдельного символа.

Набор результатов запроса - возвращена одна строка:

Практика № 5: объединение символов сопоставления с образцом в одном запросе

 
ВЫБРАТЬ ProductID, ProductName
ИЗ продуктов
ГДЕ ProductName LIKE '_u%';

Набор результатов запроса - возвращено 10 строк:

Практика № 6: Использование escape-символа по умолчанию \ (обратная косая черта)

Перед выполнением этого запроса измените название продукта Mishi Kobe Niku на Mishi Kobe_Niku и измените Queso Cabrales - Queso_Cabrales .

 
ВЫБРАТЬ ProductID, ProductName
ИЗ продуктов
ГДЕ ProductName LIKE '% \ _%';

Набор результатов запроса - 2 возвращенные строки:

Практика № 7: Укажите собственный escape-символ

 
ВЫБРАТЬ ProductID, ProductName
ИЗ продуктов
ГДЕ ProductName LIKE '% & _%' ESCAPE '&';

Набор результатов запроса:

Другие руководства в этой категории

1. Базовая инструкция SELECT

2.Использование псевдонима столбца в операторе SELECT

3. Использование буквенных символьных строк

4. Выполнение арифметических операций

5. Использование предложения WHERE для условного выбора строк

6. Сортировка данных

7. Использование предложения LIMIT для ограничения количества Полученные строки

8. Использование операторов сравнения, часть I

9. Использование операторов сравнения, часть II

10. Использование логических операторов

11.

Оставить комментарий

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

© 2019 Штирлиц Сеть печатных салонов в Перми

Цифровая печать, цветное и черно-белое копирование документов, сканирование документов, ризография в Перми.