Like ms sql: LIKE (Transact-SQL) — SQL Server

Содержание

MS SQL Server и T-SQL

Операторы фильтрации

Последнее обновление: 13.07.2017

Оператор IN

Оператор IN позволяет определить набор значений, которые должны иметь столбцы:

WHERE выражение [NOT] IN (выражение)

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

Например, выберем товары, у которых производитель либо Samsung, либо Xiaomi, либо Huawei:


SELECT * FROM Products
WHERE Manufacturer IN ('Samsung', 'Xiaomi', 'Huawei')

Мы могли бы все эти значения проверить и через оператор OR:


SELECT * FROM Products
WHERE Manufacturer = 'Samsung' OR Manufacturer = 'Xiaomi' OR Manufacturer = 'Huawei'

Но использование оператора IN гораздо удобнее, особенно если подобных значений очень много.

С помощью оператора NOT можно найти все строки, которые, наоборот, не соответствуют набору значений:


SELECT * FROM Products
WHERE Manufacturer NOT IN ('Samsung', 'Xiaomi', 'Huawei')

Оператор BETWEEN

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

WHERE выражение [NOT] BETWEEN начальное_значение AND конечное_значение

Например, получим все товары, у которых цена от 20 000 до 40 000 (начальное и конечное значения также включаются в диапазон):


SELECT * FROM Products
WHERE Price BETWEEN 20000 AND 40000

Если надо, наоборот, выбрать те строки, которые не попадают в данный диапазон, то применяется оператор NOT:


SELECT * FROM Products
WHERE Price NOT BETWEEN 20000 AND 40000

Также можно использовать более сложные выражения. 1-6]%’

Соответствует таким значениям как «iPhone 7», «iPhone 7S» и «iPhone 8». Но не соответствует значениям «iPhone 5», «iPhone 6» и «iPhone 6S»

Применим оператор LIKE:


SELECT * FROM Products
WHERE ProductName LIKE 'iPhone [6-8]%'

Оператор SQL LIKE: синтаксис, примеры

Оператор SQL LIKE устанавливает соответствие символьной строки с шаблоном.

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

expression [ NOT ] LIKE pattern

где, expression — любое символьное выражение

pattern — шаблон, по которому будет происходить проверка выражения expression. Шаблон может включать в себя следующие спец. символы:

СимволОписаниеПримеры
%Строка любой длиныПример 1
_Любой одиночный символПример 2
[]Диапазон или
последовательность символов
Пример 3
[^] Исключающий диапазон или
последовательность символов
Пример 4

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

IDUniversityNameStudentsFacultiesProfessoresLocationSite
1Perm State National Research University12400121229Permpsu. ru
2Saint Petersburg State University213002413126Saint-Petersburg spbu.ru
3Novosibirsk State University7200131527Novosibirsknsu.ru
4Moscow State University351003914358Moscowmsu.ru
5Higher School of Economics20335121615Moscowhse.ru
6Ural Federal University57000195640Yekaterinburgurfu.ru
7National Research Nuclear University860010936Moscowmephi.ru

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

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

Результат:

IDUniversityNameStudentsFacultiesProfessoresLocationSite
1Perm State National Research University12400121229Permpsu. ru
2Saint Petersburg State University213002413126Saint-Petersburg spbu.ru
3Novosibirsk State University7200131527Novosibirsknsu.ru
4Moscow State University351003914358Moscowmsu.ru

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

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

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

Результат:

IDUniversityNameStudentsFacultiesProfessoresLocationSite
2Saint Petersburg State University213002413126Saint-Petersburg spbu. ru
6Ural Federal University57000195640Yekaterinburgurfu.ru

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

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

Результат:

IDUniversityNameStudentsFacultiesProfessoresLocationSite
3Novosibirsk State University7200131527Novosibirsknsu.ru
4Moscow State University351003914358Moscowmsu. e-o]%’

Результат:

IDUniversityNameStudentsFacultiesProfessoresLocationSite
2Saint Petersburg State University213002413126Saint-Petersburg spbu.ru

T-SQL — предложение LIKE — CoderLessons.com

Предложение MS SQL Server LIKE используется для сравнения значения с аналогичными значениями с использованием подстановочных операторов. В сочетании с оператором LIKE используются два подстановочных знака:

  • Знак процента (%)
  • Подчеркивание (_)

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

Синтаксис

Ниже приведен основной синтаксис% и _.

SELECT *\column-list FROM table_name 
WHERE column LIKE 'XXXX%' 
 
or   

SELECT *\column-list FROM table_name 
WHERE column LIKE '%XXXX%'  

or  

SELECT *\column-list FROM table_name 
WHERE column LIKE 'XXXX_'  

or  

SELECT *\column-list FROM table_name 
WHERE column LIKE '_XXXX'  

or  

SELECT  *\column-list FROM table_name 
WHERE column LIKE '_XXXX_' 

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

пример

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

Sr.No Заявление и описание
1

Где заработная плата, как «200%»

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

2

ГДЕ НАЛОГОВАЯ НРАВИТСЯ «% 200%»

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

3

ГДЕ НАЛОГОВАЯ НРАВИТСЯ ‘_00%’

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

4

ГДЕ НАЛОГОВАЯ НРАВИТСЯ ‘2 _% _%’

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

5

ГДЕ НАГРАДНАЯ НРАВИТСЯ ‘% 2’

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

6

ГДЕ НАЛОГОВАЯ НРАВИТСЯ ‘_2% 3’

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

7

Где заработная плата, как «2___3»

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

Где заработная плата, как «200%»

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

ГДЕ НАЛОГОВАЯ НРАВИТСЯ «% 200%»

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

ГДЕ НАЛОГОВАЯ НРАВИТСЯ ‘_00%’

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

ГДЕ НАЛОГОВАЯ НРАВИТСЯ ‘2 _% _%’

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

ГДЕ НАГРАДНАЯ НРАВИТСЯ ‘% 2’

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

ГДЕ НАЛОГОВАЯ НРАВИТСЯ ‘_2% 3’

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

Где заработная плата, как «2___3»

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

Рассмотрим таблицу CUSTOMERS, имеющую следующие записи.

ID  NAME       AGE       ADDRESS            SALARY 
1   Ramesh     32        Ahmedabad          2000.00 
2   Khilan     25        Delhi              1500.00 
3   kaushik    23        Kota               2000.00 
4   Chaitali   25        Mumbai             6500.00 
5   Hardik     27        Bhopal             8500.00 
6   Komal      22        MP                 4500.00 
7   Muffy      24        Indore             10000.00 

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

SELECT * FROM CUSTOMERS 
WHERE SALARY LIKE '200%'; 

Приведенная выше команда выдаст следующий вывод.

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

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

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

Синтаксис

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

Примеры

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

id
айди
name
имя
age
возраст
salary
зарплата
1Дима23400
2Петя25500
3Вася23500
4Коля301000
5Иван27500
6Кирилл281000

Пример

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

SELECT * FROM workers WHERE name LIKE '%я'

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

id
айди
name
имя
age
возраст
salary
зарплата
2Петя25500
3Вася23500
4Коля301000

Пример

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

SELECT * FROM workers WHERE age LIKE '2_'

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

id
айди
name
имя
age
возраст
salary
зарплата
1Дима23400
2Петя25500
3Вася23500
5Иван27500
6Кирилл281000

Ms sql server like — Вэб-шпаргалка для интернет предпринимателей!

APPLIES TO: SQL Server Azure SQL Database Azure Synapse Analytics (SQL DW) Parallel Data Warehouse

Determines whether a specific character string matches a specified pattern. A pattern can include regular characters and wildcard characters. During pattern matching, regular characters must exactly match the characters specified in the character string. However, wildcard characters can be matched with arbitrary fragments of the character string. Using wildcard characters makes the LIKE operator more flexible than using the = and != string comparison operators. If any one of the arguments isn’t of character string data type, the SQL Server Database Engine converts it to character string data type, if it’s possible.

Transact-SQL Syntax Conventions

Syntax

Arguments

match_expression
Is any valid expression of character data type.

pattern
Is the specific string of characters to search for in match_expression, and can include the following valid wildcard characters. pattern can be a maximum of 8,000 bytes.

Wildcard characterDescriptionExample
%Any string of zero or more characters. l]%’ all author last names starting with de and where the following letter isn’t l.

escape_character
Is a character put in front of a wildcard character to indicate that the wildcard is interpreted as a regular character and not as a wildcard. escape_character is a character expression that has no default and must evaluate to only one character.

Result Types

Boolean

Result Value

LIKE returns TRUE if the match_expression matches the specified pattern.

When you do string comparisons by using LIKE, all characters in the pattern string are significant. Significant characters include any leading or trailing spaces. If a comparison in a query is to return all rows with a string LIKE ‘abc ‘ (abc followed by a single space), a row in which the value of that column is abc (abc without a space) isn’t returned. However, trailing blanks, in the expression to which the pattern is matched, are ignored. If a comparison in a query is to return all rows with the string LIKE ‘abc’ (abc without a space), all rows that start with abc and have zero or more trailing blanks are returned.

A string comparison using a pattern that contains char and varchar data may not pass a LIKE comparison because of how the data is stored for each data type. The following example passes a local char variable to a stored procedure and then uses pattern matching to find all employees whose last names start with the specified set of characters.

In the FindEmployee procedure, no rows are returned because the char variable ( @EmpLName ) contains trailing blanks whenever the name contains fewer than 20 characters. Because the LastName column is varchar, there are no trailing blanks. This procedure fails because the trailing blanks are significant.

However, the following example succeeds because trailing blanks aren’t added to a varchar variable.

Here is the result set.

Pattern Matching by Using LIKE

LIKE supports ASCII pattern matching and Unicode pattern matching. When all arguments (match_expression, pattern, and escape_character, if present) are ASCII character data types, ASCII pattern matching is performed. If any one of the arguments are of Unicode data type, all arguments are converted to Unicode and Unicode pattern matching is performed. When you use Unicode data (nchar or nvarchar data types) with LIKE, trailing blanks are significant; however, for non-Unicode data, trailing blanks aren’t significant. Unicode LIKE is compatible with the ISO standard. ASCII LIKE is compatible with earlier versions of SQL Server.

The following is a series of examples that show the differences in rows returned between ASCII and Unicode LIKE pattern matching.

LIKE comparisons are affected by collation. For more information, see COLLATE (Transact-SQL). m]%’ . Instead of 19 names, you may find only 14, with all the names that start with d or have m as the second letter eliminated from the results, and the dynamic management view names. This behavior is because match strings with negative wildcard characters are evaluated in steps, one wildcard at a time. If the match fails at any point in the evaluation, it’s eliminated.

Using Wildcard Characters As Literals

You can use the wildcard pattern matching characters as literal characters. To use a wildcard character as a literal character, enclose the wildcard character in brackets. The following table shows several examples of using the LIKE keyword and the [ ] wildcard characters.

SymbolMeaning
LIKE ‘5[%]’5%
LIKE ‘[_]n’_n
LIKE ‘[a-cdf]’a, b, c, d, or f
LIKE ‘[-acdf]’-, a, c, d, or f
LIKE ‘[ [ ]’[
LIKE ‘]’]
LIKE ‘abc[_]d%’abc_d and abc_de
LIKE ‘abc[def]’abcd, abce, and abcf

Pattern Matching with the ESCAPE Clause

You can search for character strings that include one or more of the special wildcard characters. For example, the discounts table in a customers database may store discount values that include a percent sign (%). To search for the percent sign as a character instead of as a wildcard character, the ESCAPE keyword and escape character must be provided. For example, a sample database contains a column named comment that contains the text 30%. To search for any rows that contain the string 30% anywhere in the comment column, specify a WHERE clause such as WHERE comment LIKE ‘%30!%%’ ESCAPE ‘!’ . If ESCAPE and the escape character aren’t specified, the Database Engine returns any rows with the string 30!.

If there is no character after an escape character in the LIKE pattern, the pattern isn’t valid and the LIKE returns FALSE. If the character after an escape character isn’t a wildcard character, the escape character is discarded and the following character is treated as a regular character in the pattern. These characters include the percent sign (%), underscore (_), and left bracket ([) wildcard characters when they are enclosed in double brackets ([ ]). ), hyphen (-), or right bracket (]).

0x0000 (char(0)) is an undefined character in Windows collations and can’t be included in LIKE.

Examples

A. Using LIKE with the % wildcard character

The following example finds all telephone numbers that have area code 415 in the PersonPhone table.

Here is the result set.

Here is the result set.

D. Using the [ ] wildcard characters

The following example finds employees on the Person table with the first name of Cheryl or Sheryl .

The following example finds the rows for employees in the Person table with last names of Zheng or Zhang .

Examples: Azure Synapse Analytics (SQL DW) and Parallel Data Warehouse

E. Using LIKE with the % wildcard character

The following example finds all employees in the DimEmployee table with telephone numbers that start with 612 .

F. Using NOT LIKE with the % wildcard character

The following example finds all telephone numbers in the DimEmployee table that don’t start with 612 . .

G. Using LIKE with the _ wildcard character

The following example finds all telephone numbers that have an area code starting with 6 and ending in 2 in the DimEmployee table. The % wildcard character is included at the end of the search pattern to match all following characters in the phone column value.

Оператор LIKE используется в предложении WHERE для поиска заданного шаблона в столбце.

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

  • % — Знак процента представляет нулевой, один или несколько символов
  • _ — Подчеркнутый символ представляет собой один символ
ВыражениеОписание
WHERE name LIKE ‘text%’Находит любые значения, начинающиеся с «text»
WHERE name LIKE ‘%text’Находит любые значения, заканчивающиеся на «text»
WHERE name LIKE ‘%text%’Находит любые значения, которые имеют «text» в любой позиции
WHERE name LIKE ‘_text%’Находит любые значения, которые имеют «text» во второй позиции
WHERE name LIKE ‘text_%_%’Находит любые значения, начинающиеся с «text» и длиной не менее 3 символов
WHERE name LIKE ‘text%data’Находит любые значения, начинающиеся с «text» и заканчивающиеся на «data»

Примеры SQL LIKE

Следующий оператор SQL выбирает всех пользователей с именем name, начинающимся с «Т»:

Пример:

Следующий оператор SQL выбирает всех пользователей с именем name, заканчивающимся на «м»:

Пример:

Следующий оператор SQL выбирает всех пользователем с именем name, которое имеет «text» в любой позиции:

Пример:

Следующий оператор SQL выбирает всех пользователей с именем name, которое имеет «text» во второй позиции:

Пример:

Следующий оператор SQL выбирает всех пользователей с именем name, начинающимся с «Т» и длиной не менее 3 символов:

Пример:

Следующий оператор SQL выбирает всех пользователей с именем name, которое начинается с «Т» и заканчивается на «м»:

Пример:

Следующий оператор SQL выбирает всех пользователей с именем name, которое НЕ начинается с «Т»:

ПРИМЕНЯЕТСЯ К: SQL Server (начиная с 2008) База данных SQL Azure Хранилище данных SQL Azure Parallel Data Warehouse

Определяет, совпадает ли указанная символьная строка с заданным шаблоном. Шаблон может включать обычные символы и символы-шаблоны. Во время сравнения с шаблоном необходимо, чтобы его обычные символы в точности совпадали с символами, указанными в строке. Символы-шаблоны могут совпадать с произвольными элементами символьной строки. Использование символов-шаблонов в отличие от использования операторов сравнения строки (= и !=) делает оператор LIKE более гибким. Если тип данных одного из аргументов не является символьной строкой, компонент Компонент SQL Server Database Engine, если это возможно, преобразует его в тип данных символьной строки.

Синтаксические обозначения в Transact-SQL

match_expression
Любое допустимое выражение символьного типа данных.

шаблон
Конкретная строка символов для поиска в match_expressionи могут включать следующие допустимые символы-шаблоны. шаблон не может превышать 8 000 байт.

Символ-шаблонDescriptionПример
%Любая строка, содержащая ноль или более символов. а]%’ выполняет поиск и выдает все фамилии, начинающиеся на «ив», в которых третья буква отличается от «а».

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

Логическое значение

КАК и возвращает TRUE, если match_expression соответствует указанному шаблон.

При использовании оператора LIKE для сравнения строк во внимание принимаются все символы строки-шаблона. Это касается начальных и конечных пробелов (« »). Если операция сравнения в запросе должна вернуть все строки, содержащие строки LIKE ‘абв ‘ (с символом пробела на конце), то строка, содержащая «абв» (без пробела), не будет возвращена. Однако завершающие пробелы в выражении, с которым сравнивается шаблон, не учитываются. Если операция сравнения в запросе должна вернуть все строки, содержащие строки LIKE ‘абв’ (без знака пробела на конце), то будут возвращены все строки, содержащие «абв», как с завершающими пробелами, так и без них.

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

В FindEmployee процедура, строки не возвращаются, так как char переменной ( @EmpLName ) содержит конечные пробелы, всякий раз, когда имя содержит не более 20 символов. Поскольку LastName столбец varchar, существуют без пробелов. Данная процедура завершается неудачей, так как завершающие пробелы учитываются.

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

Ниже приводится результирующий набор.

FirstName LastName City

Angela Barbariol Snohomish

David Barber Snohomish

(2 row(s) affected)

Оператор LIKE поддерживает шаблоны в ASCII и Юникоде. Когда все аргументы (match_expression, шаблон, и escape_character, если он имеется) — символьный тип ASCII, шаблон ASCII. В случае, когда какой-либо из аргументов имеет тип данных Юникод, выполняется преобразование всех аргументов в Юникод и применяется шаблон Юникод. При использовании данных в Юникоде (nchar или nvarchar типы данных) с ПОДОБНЫМ учитываются завершающие пробелы; Однако для данных не в Юникоде, завершающие пробелы не учитываются. Работа оператора LIKE с данными в Юникоде совместима со стандартом ISO. Принцип работы оператора LIKE с данными ASCII совместим с более ранними версиями SQL Server.

Приведенные ниже примеры поясняют различия между результатами сравнения данных с шаблонами оператора LIKE, представленными в Юникоде и ASCII. m]%’ , не всегда будут возвращаться одни и те же имена. Вместо 19 имен можно найти только 14, так как имена, которые начинаются с буквы d или у которых второй буквой является m , будут исключены из результата, как и имена динамических административных представлений. Причиной этому является поэтапный поиск отрицательных символов-шаблонов: за один шаг обрабатывается один символ-шаблон. Процесс поиска совпадений прекращается при возникновении сбоя на любой стадии выполнения.

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

СимволЗначение
LIKE ‘5[%]’5%
LIKE ‘[_]n’Формат
LIKE ‘[a-cdf]’a, b, c, d или f
LIKE ‘[-acdf]’-, a, b, c, d или f
LIKE ‘[ [ ]’[
LIKE ‘]’]
LIKE ‘abc[_]d%’abc_d и abc_de
LIKE ‘abc[def]’abcd, abce и abcf

Можно искать символьные строки, в состав которых входит один или более специальных символов-шаблонов. Например, таблица discounts базы данных customers может содержать значения скидок, включающих знак процента (%). Чтобы выполнить поиск знака процента в качестве символа-шаблона, необходимо ввести ключевое слово ESCAPE и escape-символ. Например, образец базы данных содержит столбец с именем comment, в котором хранится значение «30%». Чтобы найти строки, содержащие последовательность символов «30%» в столбце comment, необходимо указать предложение WHERE, например WHERE comment LIKE ‘%30!%%’ ESCAPE ‘!’ . Если предложение ESCAPE и escape-символ не указаны, компонент Компонент Database Engine вернет все строки, содержащие последовательность символов «30».

Если в шаблоне LIKE после escape-символа нет никакого символа, то шаблон является недопустимым и оператор LIKE возвращает значение FALSE. Если символ после escape-символа не является символом-шаблоном, то escape-символ игнорируется, а этот символ рассматривается как обычный символ в шаблоне. Это относится к таким символам-шаблонам, как подчеркивание (_), процент (%) и левая квадратная скобка ([), в том случае, если они заключены в квадратные скобки. ), дефис (-) и правая квадратная скобка (]).

0x0000 (char(0)) является символ не определен в параметрах сортировки Windows и не могут быть включены в LIKE.

A. Применение оператора LIKE с символом-шаблоном %

В следующем примере в таблице 415 выполняется поиск всех телефонных номеров с кодом города PersonPhone .

Ниже приводится результирующий набор.

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)

Б. Применение оператора NOT LIKE с символом-шаблоном %

В следующем примере в таблице PersonPhone выполняется поиск всех телефонных номеров с региональным кодом, отличным от 415 .

Ниже приводится результирующий набор.

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)

В. Применение предложения ESCAPE

В следующем примере предложение ESCAPE и escape-символ используются для поиска символьной строки 10-15% в столбце c1 таблицы mytbl2 .

Г. Использование символов-шаблонов [ ]

В следующем примере вычисляется сотрудников на Person имя таблицы Cheryl или Sheryl .

В следующем примере выполняется поиск строк в таблице Person для сотрудников с фамилией Zheng или Zhang .

Д. Применение оператора LIKE с символом-шаблоном %

Следующий пример находит все сотрудники DimEmployee таблицу с телефонные номера, начинающиеся с 612 .

Е.

Применение оператора NOT LIKE с символом-шаблоном %

Следующий пример находит все телефонные номера в DimEmployee таблицы, которые не начинаются с 612 . .

Ж. Применение оператора LIKE с символом-шаблоном _

Следующий пример находит все телефонные номера с кодом города, начиная с 6 и окончание 2 в DimEmployee таблицы. Обратите внимание, что символом-шаблоном % также включаются в конце шаблона поиска, поскольку первая часть номера телефона код города, и существуют дополнительные символы после значения столбца.

З. Использование символов-шаблонов [ ]

В следующем примере производится поиск DimEmployee строк с имя Rob или Bob .

Рекомендуем к прочтению

LIKE SQL Server — Oracle PL/SQL •MySQL •MariaDB •SQL Server •SQLite

В этом учебном пособии вы узнаете, как использовать в SQL Server условие LIKE (Transact-SQL) для выполнения сопоставления с шаблоном с синтаксисом и примерами.

Описание

Условие LIKE SQL Server (Transact-SQL) определяет, совпадает ли указанная символьная строка с заданным шаблоном в предложении WHERE в операторе SELECT, INSERT, UPDATE или DELETE. abc] будет соответствовать любому символу, который не является символом a, b или c)

escape_character — необязательный. Это позволяет вам проверять для буквенных экземпляров символа подстановки, например % или _.

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

Первый пример SQL Server LIKE, который мы рассмотрим, включает использование шаблона %.

Давайте объясним, как шаблон % работает в SQL Server условии LIKE. Мы хотим найти всех employees (сотрудников), чье имя last_name начинается с ‘Б’.
Например:

SELECT *
FROM employees
WHERE last_name LIKE ‘Б%’;



SELECT *

  FROM employees

WHERE last_name LIKE ‘Б%’;

Этот пример условия SQL Server LIKE вернет всех employees у которых last_name будет начинаться на ‘Б’ такие как ‘Брошкин’, ‘Баранников’, ‘Богомолец’ и т.д.

Вы также можете использовать групповой символ % несколько раз в одной строке. Например:

SELECT *
FROM employees
WHERE last_name LIKE ‘%o%’;



SELECT *

  FROM employees

WHERE last_name LIKE ‘%o%’;

В этом примере SQL LIKE мы ищем всех employees (сотрудников), у которых last_name содержит букву ‘o’.

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

Затем давайте объясним, как подстановочный символ _ (символ подчеркивания) работает в условии SQL Server LIKE. Помните, что _ ищет только один символ.
Например:

SELECT *
FROM employees
WHERE last_name LIKE ‘Кр_т’;



SELECT *

  FROM employees

WHERE last_name LIKE ‘Кр_т’;

Этот пример условия SQL LIKE возвращает всех employees (сотрудников), чье имя last_name равно 4 символам, причем первые два символа — «Кр», а последний символ — «т». Например, он может вернуть сотрудников, чье last_name является «Крот», «Крат», «Крут», «Крит» и т.д.

Вот еще один пример:

SELECT *
FROM employees
WHERE employee_number LIKE ‘123_’;



SELECT *

  FROM employees

WHERE employee_number LIKE ‘123_’;

Вам может понадобиться найти номер employee_number, но у вас есть только 3 из 4 цифр. В приведенном выше примере будет извлечено потенциально 10 записей (где отсутствующее значение могло бы равняться чему угодно от 0 до 9). Например, он может вернуть employees, чьи employee_number:

1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239

Пример использования подстановочного символа [] (квадратные скобки).

Далее, давайте объясним, как подстановочный символ [] (квадратные скобки) работает в условии SQL Server LIKE. Помните, что то, что содержится в квадратных скобках, это символы, которые вы пытаетесь сопоставить.ио]тов’;


Этот пример условия SQL Server LIKE возвращает всех сотрудников, чье имя first_name равно 5 символам, причем первый символ — «К», а три последних символа — «тов», а второй символ не является «и» или «о». Таким образом, в этом случае он будет соответствовать таким значениям, как «Катов», «Кутов», «Кетов» и т.д. Но это не будет соответствовать ни «Китов», ни «Котов».

Пример использования оператора NOT

Затем давайте посмотрим, как использовать SQL Server NOT Operator с помощью подстановочных символов.

Будем использовать % с оператором NOT. Вы также можете использовать условие SQL LIKE для поиска employees (сотрудников), имя которых не начинается с буквы «Б».
Например:

SELECT *
FROM employees
WHERE last_name NOT LIKE ‘Б%’;



SELECT *

  FROM employees

WHERE last_name NOT LIKE ‘Б%’;

Поместив оператор NOT перед условием LIKE SQL Server, вы сможете получить всех employees, имя которых не начинается с «Б».

Пример использования символов Escape

Важно понимать, как сопоставить «Escape Characters» с pattern. Эти примеры относятся конкретно к экранирующим символам в SQL Server.

Предположим, вы хотели найти символ % или _ в условии SQL Server LIKE. Вы можете сделать это, используя символ Escape.

Обратите внимание, что вы можете определить escape-символ только как один символ (length = 1).
Например:

SELECT *
FROM employees
WHERE secret_hint LIKE ‘123!%455’ ESCAPE ‘!’;



SELECT *

  FROM employees

WHERE secret_hint LIKE ‘123!%455’ ESCAPE ‘!’;

Этот пример условия SQL LIKE идентифицирует символ ! как escape-символ. Это предложение вернет всех employees, чей secret_hint составляет 123%455.

Вот еще один более сложный пример использования escape-символов в SQL Server условии LIKE.

SELECT *
FROM employees
WHERE secret_hint LIKE ‘H%!%’ ESCAPE ‘!’;



SELECT *

  FROM employees

WHERE secret_hint LIKE ‘H%!%’ ESCAPE ‘!’;

Этот пример условия SQL LIKE возвращает всех employees, чей secret_hint начинается с ‘H’ и заканчивается на ‘%’. Например, он возвращает значение, например «Help%».

Вы также можете использовать escape-символ с символом _ в условии SQL Server LIKE.
Например:

SELECT *
FROM employees
WHERE secret_hint LIKE ‘H%!_’ ESCAPE ‘!’;



SELECT *

  FROM employees

WHERE secret_hint LIKE ‘H%!_’ ESCAPE ‘!’;

Этот пример условия SQL LIKE возвращает всех employees, чей secret_hint начинается с ‘H’ и заканчивается на ‘_’. Например, он вернет значение, например «Help_».

Справочник SQL для выражений запросов, применяемых в ArcGIS—ArcGIS Pro

This topic describes the elements of common selection queries in ArcGIS. Выражения запросов в ArcGIS используют SQL.

Внимание:

Синтаксис SQL не работает при вычислении полей с помощью окна Калькулятора поля .

Часто используемые запросы: поиск строк

Строковые значения в выражениях всегда заключаются в одинарные кавычки, например:

STATE_NAME = 'California'

Строки в выражениях чувствительны к регистру, кроме случаев работы в базах геоданных в Microsoft SQL Server. Чтобы выполнять не чувствительный к регистру поиск в других источниках данных, можно использовать функцию SQL для преобразования всех значений в один регистр. Для источников данных на основе файлов, таких как файловые базы геоданных или шейп-файлы, для задания регистра выборки можно использовать функции UPPER или LOWER. Например, при помощи следующего выражения выбирается штат, имя которого написано как ‘Rhode Island’ или ‘RHODE ISLAND’:

UPPER(STATE_NAME) = 'RHODE ISLAND'

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

NAME = 'Alfie''s Trough'

При помощи оператора LIKE (вместо оператора = ) строится поиск частей строк. Например, данное выражение выбирает Mississippi и Missouri среди названий штатов США:

STATE_NAME LIKE 'Miss%'

Символ процента (%) означает, что на этом месте может быть что угодно – один символ или сотня, или ни одного. Если вы хотите использовать групповой символ, обозначающий один любой символ, используйте символ подчёркивания (_). Следующий пример показывает выражение для выбора имен Catherine Smith и Katherine Smith:

OWNER_NAME LIKE '_atherine Smith'

Можно также использовать операторы больше (>), меньше (<), больше или равно (>=), меньше или равно (<=), не равно (<>) и BETWEEN, чтобы выбирать строковые значения на основании их сортировки. Например, этот запрос выбирает все города в покрытии, названия которых начинаются с букв от М до Z:

CITY_NAME >= 'M'

Строковые функции могут использоваться для форматирования строк. Например функция LEFT возвращает определенное количество символов начиная с левого края строки. Данный запрос возвращает все штаты, начинающиеся на букву A:

LEFT(STATE_NAME,1) = 'A'

Список поддерживаемых функций вы найдете в документации по своей СУБД.

Часто используемые выражения: поиск значений NULL

Вы можете использовать ключевое слово NULL, чтобы отбирать объекты и записи, содержащие пустые поля. Перед ключевым словом NULL всегда стоит IS или IS NOT. Например, чтобы найти города, для которых не была введена численность населения по данным переписи 1996 года, можно использовать следующее выражение:

POPULATION IS NULL

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

POPULATION96 IS NOT NULL

Часто используемые выражения: поиск чисел

Точка (.) всегда используется в качестве десятичного разделителя, независимо от региональных настроек. В выражениях в качестве разделителя десятичных знаков нельзя использовать запятую.

Вы можете запрашивать цифровые значения, используя операторы равно (=), не равно (<>), больше (>), меньше (<), больше или равно (>=) и меньше или равно (<=), а также BETWEEN (между), например:

POPULATION >= 5000

Числовые функции можно использовать для форматирования чисел. Например функция ROUND округляет до заданного количества десятичных знаков данные в файловой базе геоданных:

ROUND(SQKM,0) = 500

Список поддерживаемых числовых функций см. в документации по СУБД.

Даты и время

Общие правила и часто используемые выражения

В таких источниках данных, как база геоданных, даты хранятся в полях даты–времени. Однако в шейп-файлах это не тек. Поэтому большинство из примеров синтаксиса запроса, представленных ниже, содержит ссылки на время. В некоторых случаях часть запроса, касающаяся времени, может быть без всякого вреда пропущена, когда известно, что поле содержит только даты; в других случаях её необходимо указывать, или запрос вернет синтаксическую ошибку.

Поиск полей с датой требует внимания к синтаксису, необходимому для источника данных. Если вы создаете запрос в Конструкторе запросов в режиме Условие, правильный синтаксис будет сгенерирован автоматически. Ниже приведен пример запроса, который возвращает все записи после 1 января 2011, включительно, из файловой базы геоданных:

INCIDENT_DATE >= date '2011-01-01 00:00:00'

Даты хранятся в исходной базе данных относительно 30 декабря 1899 года, 00:00:00. Это действительно для всех источников данных, перечисленных здесь.

Цель этого подраздела – помочь вам в построении запросов по датам, но не по значениям времени. Когда со значением даты хранится не нулевое значение (например January 12, 1999, 04:00:00), то запрос по дате не возвратит данную запись, поскольку если вы задаете в запросе только дату для поля в формате дата – время, недостающие поля времени заполняются нулями, и выбраны будут только записи, время которых соответствует 12:00:00 полуночи.

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

  • Строка, отображаемая в SQL-запросе, может иметь только небольшое сходство со значением, показанным в таблице, особенно когда в нее входит время. Например время, введенное как 00:00:15, отображается в атрибутивной таблице как 12:00:15 AM с региональными настройками США, а сопоставимый синтаксис запроса Datefield = ‘1899-12-30 00:00:15’.
  • Атрибутивная таблица не имеет сведений об исходных данных, пока вы не сохраните изменения. Она сначала попытается отформатировать значения в соответствии с ее собственным форматом, затем, после сохранения изменений, она попытается подогнать получившиеся результаты в соответствии с базой данных. По этой причине, вы можете вводить время в шейп-файл, но обнаружите, что оно удаляется при сохранении ваших изменений. Поле будет содержать значение ‘1899-12-30’, которое будет отображаться как 12:00:00 AM или эквивалентно, в зависимости от ваших региональных настроек.

Синтаксис даты-времени для многопользовательских баз геоданных

Oracle
Datefield = date 'yyyy-mm-dd'

Имейте в виду, что здесь записи, где время не равно нулю, не будут возвращены.

Альтернативный формат при запросах к датам в Oracle следующий:

Datefield = TO_DATE('yyyy-mm-dd hh:mm:ss','YYYY-MM-DD Hh34:MI:SS')

Второй параметр ‘YYYY-MM-DD Hh34:MI:SS’ описывает используемый при запросах формат. Актуальный запрос выглядит так:

Datefield = TO_DATE('2003-01-08 14:35:00','YYYY-MM-DD Hh34:MI:SS')

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

TO_DATE('2003-11-18','YYYY-MM-DD')

И снова записи, где время не равно нулю, не будут возвращены.

SQL Server
Datefield = 'yyyy-mm-dd hh:mm:ss'

Часть запроса hh:mm:ss может быть опущена, когда в записях не установлено время.

Ниже приведен альтернативный формат:

Datefield = 'mm/dd/yyyy'
IBM Db2
Datefield = TO_DATE('yyyy-mm-dd hh:mm:ss','YYYY-MM-DD Hh34:MI:SS')

Часть запроса hh:mm:ss не может быть опущена, даже если время равно 00:00:00.

PostgreSQL
Datefield = TIMESTAMP 'YYYY-MM-DD Hh34:MI:SS'
Datefield = TIMESTAMP 'YYYY-MM-DD'

Вы должны указать полностью временную метку при использовании запросов типа «равно», в или не будет возвращено никаких записей. Вы можете успешно делать запросы со следующими выражениями, если запрашиваемая таблица содержит записи дат с точными временными метками (2007-05-29 00:00:00 или 2007-05-29 12:14:25):

select * from table where date = '2007-05-29 00:00:00';

или

select * from table where date = '2007-05-29 12:14:25';

При использовании других операторов, таких как больше, меньше, больше или равно, или меньше или равно, вам не нужно указывать время, но это можно сделать для повышения точности. Оба эти выражения работают:

select * from table where date < '2007-05-29';
select * from table where date < '2007-05-29 12:14:25';
Файловые базы геоданных, шейп-файлы, покрытия и прочие файловые источники данных
Datefield = date 'yyyy-mm-dd'

Файловые базы геоданных поддерживают использование времени в поле даты, поэтому его можно добавить в выражение:

Datefield = date 'yyyy-mm-dd hh:mm:ss'

Шейп-файлы и покрытия не поддерживают использование времени в поле даты.

SQL, используемый в файловой базе геоданных, базируется на стандарте SQL-92.

Известные ограничения

Построение запросов к датам, находящимся в левой части (первой таблице) соединения, работает только для файловых источников данных, таких как файловые базы геоданных, шейп-файлы и таблицы DBF. Но возможен обходной путь при работе с другими, не файловыми, источниками, такими как многопользовательские данные, как описано ниже.

Запрос к датам левой части соединения будет выполнен успешно, если использовать ограниченную версию SQL, разработанную для файловых источников данных. Если вы не используете такой источник данных, можете перевести выражение для использования этого формата. Нужно обеспечить, чтобы выражение запроса включало поля из более чем одной присоединенной таблицы. Например, если соединены класс пространственных объектов и таблица (FC1 и Table1), и они поступают из многопользовательской базы геоданных, следующее выражение не будет выполнено или не вернет данные:

FC1.date = date #01/12/2001#
FC1.date = date '01/12/2001'

Чтобы запрос был выполнен успешно, можно создать вот такой запрос:

FC1.date = date '01/12/2001' and Table1.OBJECTID > 0

Так как запрос включает поля из обеих таблиц, будет использована ограниченная версия SQL. В этом выражении Table1.OBJECTID всегда > 0 для записей, которые сопоставлены в процессе создания соединения, поэтому это выражение всегда верно для всех строк, содержащих сопоставления соединения.

Чтобы быть уверенным, что каждая запись с FC1.date = date ’01/12/2001′ выбрана, используйте следующий запрос:

FC1.date = date '01/12/2001' and (Table1.OBJECTID IS NOT NULL OR Table1.OBJECTID IS NULL)

Такой запрос будет выбирать все записи с FC1.date = date ’01/12/2001′, независимо от того, есть ли сопоставление при соединении для каждой отдельной записи.

Комбинированные выражения

Составные запросы могут комбинироваться путем соединения выражений операторами AND (И) и OR (ИЛИ). Вот пример запроса для выборки всех домов с общей площадью более 1500 квадратных футов и гаражом более чем на три машины:

AREA > 1500 AND GARAGE > 3

Когда вы используете оператор OR (ИЛИ), по крайней мере одно из двух разделенных оператором выражений, должно быть верно для выбираемой записи, например:

RAINFALL < 20 OR SLOPE > 35

Используйте оператор NOT (НЕ) в начале выражения, чтобы найти объекты или записи, не соответствующие условию выражения, например:

NOT STATE_NAME = 'Colorado'

Оператор NOT можно комбинировать с AND и OR. Вот пример запроса, который выбирает все штаты Новой Англии за исключением штата Maine:

SUB_REGION = 'New England' AND NOT STATE_NAME = 'Maine'

Вычисления

Вычисления можно включить в запросы с помощью математических операторов +, –, * и /. Можно использовать вычисление между полем и числом, например:

AREA >= PERIMETER * 100

Вычисления также могут производиться между полями. Например чтобы найти районы с плотностью населения меньшим или равным 25 человек на 1 квадратную милю, можно использовать вот такой запрос:

POP1990 / AREA <= 25

Приоритет выражения в скобках

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

HOUSEHOLDS > MALES * (POP90_SQMI + AREA)

Вы можете добавить скобки в режиме Редактирование SQL вручную, или использовать команды Группировать и Разгруппировать в режиме Условие, чтобы добавить или удалить их.

Подзапросы

Подзапрос – это запрос, вложенный в другой запрос и поддерживаемый только в базах геоданных. Подзапросы могут использоваться в SQL-выражении для применения предикативных или агрегирующих функций, или для сравнения данных со значениями, хранящимися в другой таблице и т.п. Это может быть сделано с помощью ключевых слов IN или ANY. Например этот запрос выбирает только те страны, которых нет в таблице indep_countries:

COUNTRY_NAME NOT IN (SELECT COUNTRY_NAME FROM indep_countries)

Покрытия, шейп-файлы и прочие файловые источники данных, не относящиеся к базам геоданных, не поддерживают подзапросы. Подзапросы, выполняемые на версионных многопользовательских классах объектов и таблицах, не возвращают объекты, которые хранятся в дельта-таблицах. Файловые базы геоданных имеют ограниченную поддержку подзапросов, описанных в данном разделе, в то время, как многопользовательские базы геоданных поддерживают их полностью. Информацию обо всех возможностях подзапросов к многопользовательским базам геоданных смотрите в документации по своей СУБД.

Этот запрос возвращает объекты, где GDP2006 больше, чем GDP2005 любых объектов, содержащихся в countries (странах):

GDP2006 > (SELECT MAX(GDP2005) FROM countries)

Поддержка подзапросов в файловых базах геоданных ограничена следующим:

Операторы

Ниже приведен полный список операторов, поддерживаемых файловыми базами геоданных, шейп-файлами, покрытиями и прочими файловыми источниками данных. Они также поддерживаются в многопользовательских базах геоданных, хотя для этих источников данных может требоваться иной синтаксис. Кроме нижеперечисленных операторов, многопользовательские базы геоданных поддерживают дополнительные возможности. Более подробную информацию см. в документации по своей СУБД.

Арифметические операторы

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

ОператорОписание

*

Арифметический оператор умножения

/

Арифметический оператор деления

+

Арифметический оператор сложения

Арифметический оператор вычитания

Арифметические операторы

Операторы сравнения

Операторы сравнения используются для сравнения одного выражения с другим.

ОператорОписание

<

Меньше . Может использоваться со строками (сравнение основывается на алфавитном порядке) и для числовых вычислений, а также дат.

<=

Меньше или равно. Может использоваться со строками (сравнение основывается на алфавитном порядке) и для числовых вычислений, а также дат.

<>

Не равно . Может использоваться со строками (сравнение основывается на алфавитном порядке) и для числовых вычислений, а также дат.

>

Больше . Может использоваться со строками (сравнение основывается на алфавитном порядке) и для числовых вычислений, а также дат.

>=

Больше или равно. Может использоваться со строками (сравнение основывается на алфавитном порядке) и для числовых вычислений, а также дат.

[NOT] BETWEEN x AND y

Выбирает запись, если она имеет значение, которое больше или равно x и меньше или равно y. Если перед ней стоит значение NOT, она выбирает запись, если та имеет значение вне указанного диапазона. Например это выражение выбирает все записи со значениями, которые больше или равны 1 и меньше или равны 10:

OBJECTID BETWEEN 1 AND 10

Вот эквивалент этого выражения:

OBJECTID >= 1 AND OBJECTID <= 10

Однако, выражение с оператором BETWEEN обрабатывается быстрее, если у вас поле проиндексировано.

[NOT] EXISTS

Возвращает TRUE (истинно), если подзапрос возвращает хотя бы одну запись; в противном случае возвращает FALSE (ложно). Например, данное выражение вернет TRUE, если поле OJBECTID содержит значение 50:

EXISTS (SELECT * FROM parcels WHERE OBJECTID = 50)

EXISTS поддерживается только в файловых и многопользовательских базах геоданных.

[NOT] IN

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

STATE_NAME IN ('Alabama', 'Alaska', 'California', 'Florida')

IS [NOT] NULL

Выбирает запись, если там в определенном поле есть нулевое значение. Если перед NULL стоит NOT, выбирает запись, где в определенном поле есть какое-то значение.

x [NOT] LIKE y [ESCAPE ‘escape-character’]

Используйте оператор LIKE (вместо оператора = ) с групповыми символами, если хотите построить запрос по части строки. Символ процента (%) означает, что на этом месте может быть что угодно – один символ или сотня, или ни одного. Если вы хотите использовать групповой символ, обозначающий один любой символ, используйте символ подчёркивания (_). Если вам нужен доступ к несимвольным данным, используйте функцию CAST. Например, этот запрос возвращает числа, начинающиеся на 8, из целочисленного поля SCORE_INT:

CAST (SCORE_INT AS VARCHAR(10)) LIKE '8%'

Для включения символа (%) или (_) в вашу строку поиска, используйте ключевое слово ESCAPE для указания другого символа вместо escape, который в свою очередь обозначает настоящий знак процента или подчёркивания. Например данное выражение возвращает все строки, содержащие 10%, такие как 10% DISCOUNT или A10%:

AMOUNT LIKE '%10$%%' ESCAPE '$'
Операторы сравнения

Логические операторы

ОператорОписание

AND

Соединяет два условия и выбирает запись, в которой оба условия являются истинными. Например, выполнение следующего запроса выберет все дома с площадью более 1 500 квадратных футов и гаражом на две и более машины:

AREA > 1500 AND GARAGE > 2

OR

Соединяет два условия и выбирает запись, где истинно хотя бы одно условие. Например выполнение следующего запроса выберет все дома с площадью более 1,500 квадратных футов или гаражом на две и более машины:

AREA > 1500 OR GARAGE > 2

NOT

Выбирает записи, не соответствующие указанному выражению. Например это выражение выберет все штаты, кроме Калифорнии (California):

NOT STATE_NAME = 'California'
Логические операторы

Операторы строковой операции

Оператор Описание
||

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

FIRST_NAME || MIDDLE_NAME || LAST_NAME

Функции

Ниже приведен полный список функций, поддерживаемых файловыми базами геоданных, шейп-файлами, покрытиями и прочими файловыми источниками данных. Функции также поддерживаются в многопользовательских базах геоданных, хотя в этих источниках данных может использоваться иной синтаксис или имена функций. Кроме нижеперечисленных функций, многопользовательские базы геоданных поддерживают дополнительные возможности. Более подробную информацию см. в документации по своей СУБД.

Функции дат

ФункцияОписание

CURRENT_DATE

Возвращает текущую дату.

EXTRACT(extract_field FROM extract_source)

Возвращает фрагмент extract_field из extract_source. Аргумент extract_source является выражением даты–времени. Аргументом extract_field может быть одно из следующих ключевых слов: YEAR, MONTH, DAY, HOUR, MINUTE или SECOND.

CURRENT TIME

Возвращает текущую дату.

Функции дат

Строковые функции

Аргументы, обозначаемые string_exp, могут быть названием столбца, строковой константой или результатом другой скалярной функции, где исходные данные могут быть представлены в виде символов.

Аргументы, обозначаемые character_exp, являются строками символов переменной длины.

Аргументы, указанные как start или length могут быть числовыми постоянными или результатами других скалярных функций, где исходные данные представлены числовым типом.

Строковые функции, перечисленные здесь, базируются на 1; то есть, первым символом в строке является символ 1.

ФункцияОписание

CHAR_LENGTH(string_exp)

Возвращает длину строкового выражения в символах.

LOWER(string_exp)

Возвращает строку, идентичную string_exp, в которой все символы верхнего регистра изменены на символы нижнего регистра.

POSITION(character_exp IN character_exp)

Возвращает место первого символьного выражения во втором символьном выражении. Результат – число с точностью, определяемой реализацией и коэффициентом кратности 0.

SUBSTRING(string_exp FROM start FOR length)

Возвращает символьную строку, извлекаемую из string_exp, начинающуюся с символа, положение которого определяется символами start и length .

TRIM(BOTH | LEADING | TRAILING trim_character FROM string_exp)

Возвращает string_exp, укороченную на количество символов, указанное в аргументе trim_character, с начала, с конца или с обоих концов строки.

UPPER(string_exp)

Возвращает строку, идентичную string_exp, в которой все символы нижнего регистра изменены на символы верхнего регистра.

Строковые функции

Числовые функции

Все числовые функции возвращают числовые значения.

Аргументы, обозначенные numeric_exp, float_exp или integer_exp могут быть именем столбца, результатом другой скалярной функции или числовой константой, где исходные данные могут быть представлены числовым типом.

ФункцияОписание

ABS(numeric_exp)

Возвращает абсолютное значение numeric_exp.

ACOS(float_exp)

Возвращает угол в радианах, равный арккосинусу float_exp.

ASIN(float_exp)

Возвращает угол в радианах, равный арксинусу float_exp.

ATAN(float_exp)

Возвращает угол в радианах, равный арктангенсу float_exp.

CEILING(numeric_exp)

Возвращает наименьшее целочисленное значение, большее или равное numeric_exp.

COS(float_exp)

Возвращает косинус float_exp, где float_exp — угол, выраженный в радианах.

FLOOR(numeric_exp)

Возвращает наибольшее целое значение, меньшее или равное numeric_exp.

LOG(float_exp)

Возвращает натуральный логарифм float_exp.

LOG10(float_exp)

Возвращает логарифм по основанию 10 float_exp.

MOD(integer_exp1, integer_exp2)

Возвращает результат деления integer_exp1 на integer_exp2.

POWER(numeric_exp, integer_exp)

Возвращает значение numeric_exp в степени integer_exp.

ROUND(numeric_exp, integer_exp)

Возвращает numeric_exp, округленное до integer_exp знаков справа от десятичной точки. Если integer_exp отрицательное, numeric_exp округляется до |integer_exp| знаков слева от десятичной запятой.

SIGN(numeric_exp)

Возвращает указатель знака numeric_exp. Если numeric_exp меньше нуля, возвращается -1. Если numeric_exp равно нулю, возвращается 0. Если numeric_exp больше нуля, возвращается 1.

SIN(float_exp)

Возвращает синус float_exp, где float_exp — угол, выраженный в радианах.

TAN(float_exp)

Возвращает тангенс float_exp, где float_exp — угол, выраженный в радианах.

TRUNCATE(numeric_exp, integer_exp)

Возвращает numeric_exp, округленное до integer_exp знаков справа от десятичной точки. Если integer_exp отрицательное, numeric_exp округляется до |integer_exp| знаков слева от десятичной запятой.

Числовые функции

Функция CAST

Функция CAST конвертирует значение в определенный тип данных. Синтаксис выглядит так:

CAST(exp AS data_type [(length)])

Пример:

CAST (SCORE_INT AS VARCHAR(10))

Аргумент exp может быть названием столбца, результатом другой скалярной функции или буквенным. Data_type может быть любым из следующих ключевых слов, и задается строчными или заглавными буквами: CHAR, VARCHAR, INTEGER, SMALLINT, REAL, DOUBLE, DATE, TIME, DATETIME, NUMERIC или DECIMAL.

Более подробно о функции CAST см. CAST and CONVERT.

Связанные разделы

Отзыв по этому разделу?

подстановочных знаков SQL


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

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

Подстановочные знаки используются с
КАК

оператор. Оператор LIKE используется в
Предложение WHERE
для поиска указанного шаблона в столбце.

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

Обозначение Описание Пример
* Представляет ноль или более символов bl * находит bl, черный, синий и blob
? Представляет одиночный символ h? T находит hot, hat и hit
[] Представляет любой одиночный символ в квадратных скобках. ч [oa] t находит hot and hat, но не попадает в
! — обозначает любой символ, не заключенный в квадратные скобки. ч [! Oa] t находит хит, но не горячо
Представляет диапазон символов c [a-b] t находит кот и cbt
# Представляет любой отдельный числовой символ 2 # 5 находит 205, 215, 225, 235, 245, 255, 265, 275, 285 и 295

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

Обозначение Описание Пример
% Представляет ноль или более символов bl% находит bl, черный, синий и blob
_ Представляет одиночный символ h_t находит hot, hat и hit
[] Представляет любой отдельный символ в квадратных скобках. oa] t находит попадание, но не горячо
Представляет диапазон символов c [a-b] t находит кот и cbt

Все символы подстановки также можно использовать в комбинациях!

Вот несколько примеров, показывающих разные операторы LIKE с подстановочными знаками «%» и «_»:

НРАВИТСЯ Оператор Описание
ГДЕ CustomerName КАК «a%» Находит любые значения, начинающиеся с «a».
ГДЕ CustomerName КАК ‘% a’ Находит любые значения, заканчивающиеся на «a».
ГДЕ CustomerName НРАВИТСЯ ‘% or%’ Находит любые значения, у которых есть «или» в любой позиции.
ГДЕ CustomerName LIKE ‘_r%’ Находит любые значения, во второй позиции которых стоит буква «r».
ГДЕ CustomerName КАК ‘a __%’ Находит любые значения, которые начинаются с «a» и имеют длину не менее 3 символов.
ГДЕ ContactName КАК ‘a% o’ Находит любые значения, начинающиеся с «a» и заканчивающиеся на «o».

Демо-база данных

В таблице ниже показана полная таблица «Клиенты» из образца базы данных Northwind:

Идентификатор клиента Имя клиента Имя контакта Адрес Город Почтовый индекс Страна
1 Альфредс Футтеркисте Мария Андерс Obere Str.57 Берлин 12209 Германия
2 Ana Trujillo Emparedados y helados Ana Trujillo Avda. de la Constitución 2222 México D.F. 05021 Мексика
3 Антонио Морено Такерия Антонио Морено Матадерос 2312 México D.F. 05023 Мексика
4 Вокруг Рога Thomas Hardy120 Hanover Sq. Лондон WA1 1DP Великобритания
5 Berglunds snabbköp Christina Berglund Berguvsvägen 8 Luleå S-958 22 Швеция
6 Blauer See Delikatessen Hanna Moos Forsterstr. 57 Мангейм 68306 Германия
7 Blondel père et fils Frédérique Citeaux 24, место Клебер Страсбург 67000 Франция
8 Bólido Comidas preparadas Martín Sommer C / Araquil, 67 Мадрид 28023 Испания
9 Bon app ‘ Laurence Lebihans 12, rue des Bouchers Marseille 13008 France
10 Рынок нижнего доллара Элизабет Линкольн 23 Tsawassen Blvd. Tsawassen T2F 8M4 Канада
11 Напитки B Виктория Эшворт Цирк Фаунтлерой Лондон EC2 5NT Великобритания
12 Cactus Comidas para llevar Patricio Simpson Cerrito 333 Buenos Aires 1010 Аргентина
13 Centro comercial Moctezuma Francisco Chang Sierras de Granada 9993 México D.F. 05022 Мексика
14 Chop-suey Chinese Yang Wang Hauptstr. 29 Берн 3012 Швейцария
15 Comércio Mineiro Pedro Afonso Av. dos Lusíadas, 23 Сан-Паулу 05432-043 Бразилия
16 Consolidated Holdings Elizabeth Brown Berkeley Gardens 12 Brewery London WX1 6LT UK
17 Drachenblut Delikatessend Sven Ottlieb Walserweg 21 Ахен 52066 Германия
18 Du monde entier Janine Labrune 67, rue des Cinquante Otages Nantes 44000 France
19 Eastern Connection Ann Devon 35 King George London WX3 6FW UK
20 Эрнст Гендель Роланд Мендель Кирхгассе 6 Грац 8010 Австрия
21 Семья Аркибальдо Ария Круз Rua Orós, 92 Сан-Паулу 05442-030 Бразилия
22 FISSA Fabrica Inter.Salchichas S.A. Диего Роэль С / Моралзарзал, 86 Мадрид 28034 Испания
23 Фоли гурманы Мартин Рансе 184, Chaussée de Tournai Лилль 59000 Франция
24 Folk och fä HB Мария Ларссон Окергатан 24 Bräcke С-844 67 Швеция
25 Frankenversand Питер Франкен Berliner Platz 43 Мюнхен 80805 Германия
26 Реставрация Франции Карин Шмитт 54, rue Royale Нант 44000 Франция
27 Франки С.П.А. Паоло Аккорти Via Monte Bianco 34 Турин 10100 Италия
28 Furia Bacalhau e Frutos do Mar Лино Родригес Jardim das rosas n. 32 Лиссабон 1675 Португалия
29 Galería del gastrónomo Эдуардо Сааведра Rambla de Cataluña, 23 Барселона 08022 Испания
30 Годос Кочина Типика Хосе Педро Фрейре C / Romero, 33 Севилья 41101 Испания
31 Ланчонеты для гурманов Андре Фонсека Av.Бразилия, 442 Кампинас 04876-786 Бразилия
32 Продовольственный рынок Великих озер Говард Снайдер 2732 Baker Blvd. Евгений 97403 США
33 GROSELLA-Restaurante Мануэль Перейра 5ª Ave. Los Palos Grandes Каракас 1081 Венесуэла
34 Ханари Карнес Марио Понтес Rua do Paço, 67 Рио-де-Жанейро 05454-876 Бразилия
35 HILARIÓN-Abastos Карлос Эрнандес Carrera 22 con Ave.Карлос Сублет № 8-35 Сан-Кристобаль 5022 Венесуэла
36 Магазин импорта Hungry Coyote Йоши Латимер City Center Plaza 516 Main St. Элгин 97827 США
37 Голодная сова, ночные бакалейные лавки Патрисия Маккенна 8 Johnstown Road Пробка Ирландия
38 Island Trading Хелен Беннет Садовый домик Crowther Way Коуз PO31 7PJ UK
39 Кениглих Эссен Филип Крамер Maubelstr.90 Бранденбург 14776 Германия
40 La corne d’abondance Даниэль Тонини 67, авеню Европы Версаль 78000 Франция
41 Дом в Азии Аннет Руле 1 rue Alsace-Lorraine Тулуза 31000 Франция
42 Винные погреба Смеющегося Вакха Йоши Таннамури 1900 Дуб ул. Ванкувер V3F 2K1 Канада
43 Lazy K Kountry Store Джон Стил 12-я оркестровая терраса Уолла Уолла 99362 США
44 Lehmanns Marktstand Ренате Месснер Magazinweg 7 Франкфурт а.М. 60528 Германия
45 Let’s Stop N Shop Хайме Йоррес 87 Polk St. Suite 5 Сан-Франциско 94117 США
46 ЛИЛА-Супермеркадо Карлос Гонсалес Carrera 52 con Ave. Bolívar # 65-98 Llano Largo Barquisimeto 3508 Венесуэла
47 ЛИНО-Деликатесы Фелипе Искьердо Ave.5 de Mayo Porlamar И. де Маргарита 4980 Венесуэла
48 Ресторан Lonesome Pine Фрэн Уилсон 89 Chiaroscuro Rd. Портленд 97219 США
49 Magazzini Alimentari Riuniti Джованни Ровелли Via Ludovico il Moro 22 Бергамо 24100 Италия
50 Дом Дьюи Кэтрин Дьюи Rue Joseph-Bens 532 Брюссель Б-1180 Бельгия
51 Mère Paillarde Жан Фресньер 43 rue St.Лоран Монреаль h2J 1C3 Канада
52 Morgenstern Gesundkost Александр Фойер Heerstr. 22 Лейпциг 04179 Германия
53 Север / Юг Саймон Кроутер Южный дом 300 Куинсбридж Лондон SW7 1RZ UK
54 Océano Atlántico Ltda. Ивонн Монкада Ing. Густаво Монкада 8585 Piso 20-A Буэнос-Айрес 1010 Аргентина
55 Деликатесы Старого Света Рене Филлипс 2743 ул. Беринга Анкоридж 99508 США
56 Ottilies Käseladen Генриетта Пфальцхайм Mehrheimerstr.369 Кельн 50739 Германия
57 Paris spécialités Мари Бертран 265, бульвар Шарон, Париж 75012 Франция
58 Pericles Comidas clásicas Гильермо Фернандес Calle Dr. Jorge Cash 321 Мексика Д.F. 05033 Мексика
59 Piccolo und mehr Георг Пиппс Geislweg 14 Зальцбург 5020 Австрия
60 Принцесса Изабель Винхосс Изабель де Кастро Estrada da saúde n. 58 Лиссабон 1756 Португалия
61 Que Delícia Бернардо Батиста Rua da Panificadora, 12 Рио-де-Жанейро 02389-673 Бразилия
62 Королева Козинья Лусиа Карвалью Аламеда-дос-Канариос, 891 Сан-Паулу 05487-020 Бразилия
63 QUICK-Stop Хорст Клосс Taucherstraße 10 Cunewalde 01307 Германия
64 Гранд-ранчо Серхио Гутьеррес Av.дель Либертадор 900 Буэнос-Айрес 1010 Аргентина
65 Бакалея в каньоне гремучей змеи Паула Уилсон 2817 Милтон Др. Альбукерке 87110 США
66 Reggiani Caseifici Маурицио Морони Strada Provinciale 124 Реджо-Эмилия 42100 Италия
67 Рикардо Адочикадос Janete Limeira Av.Копакабана, 267 Рио-де-Жанейро 02389-890 Бразилия
68 Супермаркет Рихтера Майкл Хольц Grenzacherweg 237 Женева 1203 Швейцария
69 Romero y tomillo Алехандра Камино Gran Vía, 1 Мадрид 28001 Испания
70 Santé Gourmet Йонас Бергульфсен Ворота Erling Skakkes 78 Ставерн 4110 Норвегия
71 Экономичные рынки Хосе Паваротти 187 Suffolk Ln. Бойсе 83720 США
72 Seven Seas Imports Хари Кумар 90 Wadhurst Rd. Лондон OX15 4NB UK
73 Бистро Simons Джитте Петерсен Винбелтет 34 København 1734 Дания
74 Spécialités du monde Dominique Perrier 25, rue Lauriston Париж 75016 Франция
75 Сплит Рейл Пиво и Эль Art Braunschweiger с.О. Box 555 Посадочный модуль 82520 США
76 Suprêmes délices Паскаль Картрен Boulevard Tirou, 255 Шарлеруа Б-6000 Бельгия
77 Большой сыр Лиз Никсон 89 Jefferson Way Suite 2 Портленд 97201 США
78 Коробка взломщика Лю Вонг 55 Grizzly Peak Rd. Butte 59801 США
79 Toms Spezialitäten Карин Джозефс Luisenstr. 48 Мюнстер 44087 Германия
80 Tortuga Restaurante Мигель Анхель Паолино Avda. Ацтека 123 Мексика Д.F. 05033 Мексика
81 Tradição Hipermercados Анабела Домингес Av. Инес де Кастро, 414 Сан-Паулу 05634-030 Бразилия
82 Главный поставщик деликатесов Trail Гельвеций Надь 722 DaVinci Blvd. Киркланд 98034 США
83 Vaffeljernet Palle Ibsen Smagsløget 45 Орхус 8200 Дания
84 Victuailles на складе Мэри Савли 2, rue du Commerce Лион 69004 Франция
85 Вин и спирты Chevalier Поль Анрио 59 rue de l’Abbaye Реймс 51100 Франция
86 Die Wandernde Kuh Рита Мюллер Adenauerallee 900 Штутгарт 70563 Германия
87 Wartian Herkku Пиркко Коскитало Torikatu 38 Оулу
Финляндия
88 Веллингтон Импортадора Паула Паренте Rua do Mercado, 12 Resende 08737-363 Бразилия
89 Рынки White Clover Карл Яблонски 305 — 14-я авеню.С. Люкс 3B Сиэтл 98128 США
90 Wilman Kala Матти Карттунен Keskuskatu 45 Хельсинки 21240 Финляндия
91 Wolski Zbyszek ул. Filtrowa 68 Walla 01-012 Польша


Использование подстановочного знака%

Следующий оператор SQL выбирает всех клиентов с городом, начинающимся с
«бер»:

Следующий оператор SQL выбирает всех клиентов с городом, содержащим
узор «es»:


Использование подстановочного знака _

Следующий оператор SQL выбирает всех клиентов с городом, начинающимся с
любой символ, за которым следует «ондон»:

Следующий оператор SQL выбирает всех клиентов с городом, начинающимся с
«L», за которым следует любой символ, за которым следует «n», за которым следует любой символ,
за которым следует «on»:


Использование подстановочного знака [charlist]

Следующий оператор SQL выбирает всех клиентов с городом, начинающимся с
«b», «s» или «p»:

Следующий оператор SQL выбирает всех клиентов с городом, начинающимся с
«a», «b» или «c»:


Использование подстановочного знака [! Charlist]

Два следующих оператора SQL выбирают всех клиентов, у которых город НЕ начинается.
с буквами «b», «s» или «p»:

или:


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

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

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

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

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

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

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

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

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

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

Использование 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

ГДЕ тел. .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 Server: КАК условие


В этом руководстве по SQL Server объясняется, как использовать условие LIKE в SQL Server (Transact-SQL) для сопоставления шаблонов с синтаксисом и примерами.

Описание

Условие LIKE для SQL Server (Transact-SQL) позволяет использовать подстановочные знаки в предложении WHERE операторов SELECT, INSERT, UPDATE или DELETE. Это позволяет выполнять сопоставление с образцом.

Синтаксис

Синтаксис условия LIKE в SQL Server (Transact-SQL):

 выражение LIKE pattern [ESCAPE 'escape_character'] 

Параметры или аргументы

выражение
Символьное выражение, например столбец или поле.
узор

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

Подстановочный знак Пояснение
% Позволяет сопоставить любую строку любой длины (включая нулевую)
_ Позволяет сопоставить один символ
[] Позволяет сопоставить любой символ в скобках [] (например, [abc] будет соответствовать символам a, b или c). abc] будет соответствовать любому символу, не являющемуся символами a, b или c).
escape_character
Необязательно.Это позволяет вам проверять буквальные экземпляры подстановочного символа, такого как% или _.

Пример — использование подстановочного знака% (подстановочный знак процента)

В первом примере LIKE для SQL Server, который мы рассмотрим, используется подстановочный знак% (подстановочный знак процента).

Давайте объясним, как подстановочный знак% работает в условии LIKE SQL Server. Мы хотим найти всех сотрудников, у которых last_name начинается с «B».

Например:

 ВЫБРАТЬ *
ОТ сотрудников
ГДЕ last_name КАК 'B%'; 

Вы также можете использовать подстановочный знак% несколько раз в одной строке.Например,

 ВЫБРАТЬ *
ОТ сотрудников
ГДЕ last_name LIKE '% o%'; 

В этом примере условия LIKE SQL Server мы ищем всех сотрудников , чье last_name содержит букву ‘o’.

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

Теперь давайте объясним, как подстановочный знак _ (подстановочный знак подчеркивания) работает в условии LIKE SQL Server. Помните, что подстановочный знак _ ищет только один символ.

Например:

 ВЫБРАТЬ *
ОТ сотрудников
ГДЕ first_name LIKE 'Ad_m'; 

Этот пример условия LIKE для SQL Server вернет всех сотрудников, чье имя first_name состоит из 4 символов, где первые два символа — это «Ad», а последний символ — «m».Например, он может возвращать сотрудников, чье имя first_name — «Адам», «Адем», «Адим», «Адом», «Адум» ​​и т. Д.

Вот еще один пример:

 ВЫБРАТЬ *
ОТ сотрудников
ГДЕ employee_number КАК '123_'; 

Вы можете обнаружить, что ищете employee_number , но у вас есть только 3 из 4 цифр. В приведенном выше примере потенциально может быть получено 10 записей (где отсутствующее значение может быть от 0 до 9). Например, он может вернуть сотрудников с номерами сотрудников:

.

1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239

Пример — использование подстановочного знака [] (квадратные скобки подстановочного знака)

Теперь давайте объясним, как подстановочный знак [] (квадратные скобки подстановочный знак) работает в условии LIKE SQL Server.Помните, что в квадратных скобках заключены символы, которым вы пытаетесь сопоставить.

Например:

 ВЫБРАТЬ *
ОТ сотрудников
ГДЕ first_name LIKE 'Sm [iy] th'; 

Этот пример условия LIKE для SQL Server вернет всех сотрудников, чье имя first_name составляет 5 символов, где первые два символа — это Sm, а последние два символа — th, а третий символ — i или у ‘. Таким образом, в этом случае он будет соответствовать либо «Смит», либо «Смит».iy] th ‘;

Этот пример условия LIKE для SQL Server вернет всех сотрудников, чье имя first_name состоит из 5 символов, где первые два символа — это Sm, а последние два символа — th, а третий символ не является ни i, ни у ‘. Таким образом, в этом случае он будет соответствовать таким значениям, как «Smath», «Smeth», «Smoth» и т. Д. Но он не будет соответствовать ни «Smith», ни «Smyth».

Пример — использование оператора НЕ

Затем давайте посмотрим, как можно использовать оператор NOT SQL Server с подстановочными знаками.

Давайте использовать% wilcard с оператором NOT. Вы также можете использовать условие LIKE для SQL Server, чтобы найти сотрудников, у которых last_name не , а не начинается с ‘B’.

Например:

 ВЫБРАТЬ *
ОТ сотрудников
ГДЕ last_name НЕ НРАВИТСЯ 'B%'; 

Поместив оператор NOT перед условием LIKE SQL Server, можно получить всех сотрудников, чье имя last_name не , а не начинается с ‘B’.

Пример — использование escape-символов

Важно понимать, как «экранировать символы» при сопоставлении с образцом.Эти примеры конкретно относятся к экранированию символов в SQL Server.

Допустим, вы хотели найти символ% или _ в условии LIKE SQL Server. Вы можете сделать это с помощью символа Escape.

Обратите внимание, что вы можете определить escape-символ только как одиночный символ (длина 1).

Например:

 ВЫБРАТЬ *
ОТ сотрудников
ГДЕ secret_hint LIKE '123!% 455' ESCAPE '!'; 

Этот пример условия LIKE для SQL Server определяет! символ как escape-символ.Этот оператор вернет всех сотрудников, у которых secret_hint равно 123% 455.

Вот еще один более сложный пример использования escape-символов в условии LIKE SQL Server.

 ВЫБРАТЬ *
ОТ сотрудников
WHERE secret_hint LIKE 'H%!%' ESCAPE '!'; 

Этот пример условия LIKE для SQL Server возвращает всех сотрудников, у которых secret_hint начинается с H и заканчивается на%. Например, он вернет такое значение, как «Help%».

Вы также можете использовать escape-символ с символом _ в условии LIKE SQL Server.

Например:

 ВЫБРАТЬ *
ОТ сотрудников
ГДЕ secret_hint LIKE 'H%! _' ESCAPE '!'; 

Этот пример условия LIKE для SQL Server возвращает всех сотрудников, у которых secret_hint начинается с H и заканчивается на _. Например, он вернет такое значение, как «Help_».

LIKE Operator и варианты его использования. — {coding} Прицел

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

  1. Его можно использовать для идентификации данных, в которых используется комбинация, например номер кредитной или дебетовой карты, адрес электронной почты или номер телефона.
  2. Найдите определенный текстовый образец или примените фильтр к текстовым, числовым или специальным символьным данным.
  3. Его можно использовать для анализа данных в ETL путем создания правил для входящего и исходящего трафика, поиска шаблонов в коде.

В отличие от MySQL и Oracle, база данных SQL Server не поддерживает встроенные функции RegEx. Однако SQL Server предлагает встроенные функции для решения таких сложных проблем. Примеры таких функций: LIKE, PATINDEX, CHARINDEX, SUBSTRING и REPLACE. Мы можем комбинировать эти функции с другими и создавать сложные и более сложные запросы. Эти запросы сложно поддерживать, и для их разработки требуется больше времени и усилий, если мы запрашиваем большую таблицу, чем эти запросы могут иметь огромное влияние на производительность.

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

Оператор LIKE использует комбинацию совпадающего выражения и шаблона. Оператор LIKE поддерживает следующие допустимые символы подстановки.

Подстановочный знак Описание
% Строка из нуля или более символов.A]% ‘заполнит записи, начинающиеся с Ni и где следующая буква не A.

В этой статье я собираюсь продемонстрировать следующие варианты использования оператора LIKE.

Подготовка демонстрационной установки

Сначала создайте демонстрационную таблицу с именем « Patient_Addresses. »Для этого выполните следующий запрос:

 ИСПОЛЬЗОВАТЬ БАЗУ ДЕМОДАННЫХ
ИДТИ

СОЗДАТЬ ТАБЛИЦУ Patient_Addresses
(
ID INT IDENTITY (1, 1),
ТЕКСТДАННЫЕ NVARCHAR (МАКС.)
) 

Теперь выполните следующий запрос, чтобы вставить данные в «Patient_Addresses».

 USE [база демоданных]
ИДТИ
INSERT [dbo]. [Patient_Addresses] ([Address]) ЗНАЧЕНИЯ (N'KALOLI GAM TA-KHEDA DIST-KHEDA ')
ИДТИ
INSERT [dbo]. [Patient_Addresses] ([Address]) ЗНАЧЕНИЯ (N'PATHAR KUVA RELIEF ROADA''BAD ')
ИДТИ
INSERT [dbo]. [Patient_Addresses] ([Address]) ЗНАЧЕНИЯ (N'TARA APPTS, GURUKUL ROAD AHMEDABAD ')
ИДТИ
INSERT [dbo]. [Patient_Addresses] ([Address]) VALUES (N'1278, HOJAVALIGALI GOMATIPUR A`BD ')
ИДТИ
INSERT [dbo]. [Patient_Addresses] ([Address]) ЗНАЧЕНИЯ (N'DHOLKA ')
ИДТИ
ВСТАВИТЬ [dbo].[Patient_Addresses] ([Address]) ЗНАЧЕНИЯ (N'KHODIYAR NAGAR BEHRAMPURA A, BAD ')
ИДТИ
INSERT [dbo]. [Patient_Addresses] ([Address]) ЗНАЧЕНИЯ (N'2 / 27 ASHPURI SOC. GHODASAR A`BD ')
ИДТИ
INSERT [dbo]. [Patient_Addresses] ([Address]) ЗНАЧЕНИЯ (N'GHEE KANTA ')
ИДТИ
ВСТАВИТЬ [dbo]. [Patient_Addresses] ([Address]) ЗНАЧЕНИЯ
(N'GAM; BODIYA TALUKO; LIMADI DIST; SURENDRANAGR ')
ИДТИ
INSERT [dbo]. [Patient_Addresses] ([Address]) ЗНАЧЕНИЯ (N'ELISE BRIDGE ')
ИДТИ
INSERT [dbo]. [Patient_Addresses] ([Address]) ЗНАЧЕНИЯ (N'GJ ')
ИДТИ
ВСТАВИТЬ [dbo].[Patient_Addresses] ([Address]) ЗНАЧЕНИЯ (N'MP ')
ИДТИ
INSERT [dbo]. [Patient_Addresses] ([Address]) ЗНАЧЕНИЯ (N'Q ')
GO 

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

 ИСПОЛЬЗОВАТЬ БАЗУ ДЕМОДАННЫХ
ИДТИ

ВЫБРАТЬ *
ОТ [ПАЦИЕНТ_АДРЕСОВ] 

Данные должны выглядеть следующим образом.

Теперь позвольте мне объяснить варианты использования.

Пример 1:

Например, я хочу заполнить только те строки, которые начинаются с PA.Чтобы заполнить данные, мы можем использовать регулярное выражение «[XY]%». Для этого выполните следующий запрос.

 ВЫБРАТЬ *
ОТ PATIENT_ADDRESSES
ГДЕ АДРЕС КАК "[PA]%" 

Ниже приводится результат

.

Как вы можете видеть на изображении выше, запрос получил только запись, в которой значение столбца адреса начинается с «PA»

Пример 2:

Например, я хочу заполнить только записи, которые начинаются только с двух символов.Первый символ должен быть «E», а второй — «L.» Для этого выполните следующий запрос

 ВЫБРАТЬ *
ОТ PATIENT_ADDRESSES
ГДЕ АДРЕС КАК "[E] [L]%" 

Ниже приводится результат:

Как вы можете видеть на изображении выше, запрос извлек только запись, в которой значение столбца адреса имеет «E» в качестве первого символа и «L» в качестве второго символа.

Пример 3

Например, мы хотим получить только те строки, которые содержат два символа, и эти символы должны быть от A до Z, поэтому запрос должен быть записан в следующей структуре:

 База демоданных USE
идти

ВЫБРАТЬ *
ОТ [адреса_больных]
ГДЕ адрес LIKE '[A-Z] [A-Z]' 

Ниже приводится результат.

Как видно из изображения выше, запрос возвращает данные, которые содержат ровно два символа, а значения обоих символов находятся в диапазоне от A до Z.

Пример 4

Теперь мы хотим получить данные, где первый символ будет между K и P, а остальная часть строки будет такой же. Чтобы получить такой формат, используйте следующую структуру.

 ИСПОЛЬЗОВАТЬ БАЗУ ДЕМОДАННЫХ
ИДТИ

ВЫБРАТЬ *
ОТ [PATIENT_ADDRESSES]
ГДЕ АДРЕС КАК "[K-P]%" 

Ниже приводится результат:

Точно так же мы можем получить данные, в которых последние три символа будут «ПЛОХО», и, за исключением этих символов, строка останется прежней.Для этого выполните следующий запрос.

 База демоданных USE
идти

ВЫБРАТЬ *
ОТ [адреса_больных]
ГДЕ адрес, КАК "% BAD" 

Пример 5

Например, мы хотим получить список адресов, где первый символ строки должен находиться между E и H, а оставшаяся строка должна оставаться такой же. Для этого мы будем использовать регулярное выражение [X-Y]%. Выполните следующий запрос:

 ВЫБРАТЬ *
ОТ [PATIENT_ADDRESSES]
ГДЕ АДРЕС КАК "[E-H]%" 

Ниже приводится результат.

Точно так же мы можем получить список адресов, где последний символ адресного столбца должен находиться между A и C, а оставшаяся строка должна оставаться такой же. Для этого мы будем использовать регулярное выражение% [X-Y]. Выполните следующий запрос

 ВЫБРАТЬ *
ОТ PATIENT_ADDRESSES
ГДЕ АДРЕС КАК "% [A-C]" 

Ниже приводится результат.

Теперь давайте посмотрим на несколько сложных примеров.

Пример 6

Мы хотим заполнить записи из адресной таблицы, где последний символ не должен находиться между B и D.А-Я]% ‘

Ниже приводится результат

.

Найти конкретный образец строки

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

  1. Сначала разрешены любые символы (первый%),
  2. Третий символ должен быть либо I, либо S,
  3. Четвертый и пятый символ будут SE. Эти символы статичны.
  4. Пятый символ будет пробелом.
  5. И после этого разрешен любой символ (последний%).

Чтобы заполнить запись, выполните следующий запрос.

 ВЫБРАТЬ *
ОТ [адреса_больных]
ГДЕ адрес КАК '% [IS] SE []%' 

Ниже приводится результат.

Сводка

В этой статье я рассмотрел:

  1. Что такое регулярное выражение?
  2. Обзор операторов LIKE и того, как мы можем использовать его в качестве регулярного выражения.
  3. Различные варианты использования оператора LIKE.

Нисарг — администратор баз данных SQL Server и сертифицированный специалист Microsoft, имеющий более 5 лет опыта в администрировании SQL Server и 2 года в администрировании баз данных Oracle 10g. Он имеет опыт проектирования баз данных, настройки производительности, резервного копирования и восстановления, настройки высокой доступности и аварийного восстановления, миграции и обновления баз данных. Он получил степень бакалавра информационных технологий Университета Ганпат.

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

SQL WHERE LIKE, SELECT WHERE LIKE Wildcard — с примерами

Когда использовать WHERE LIKE в SQL?

Используйте WHERE LIKE, если известен только фрагмент текстового значения.
Предложение WHERE LIKE определяет, соответствует ли строка символов шаблону.
WHERE LIKE поддерживает два варианта сопоставления с подстановочными знаками:% и _.

Синтаксис SQL WHERE LIKE

Общий синтаксис:

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

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

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

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

SQL WHERE LIKE Примеры

Проблема : перечислить все продукты с названиями, начинающимися с ‘Ca’

ВЫБЕРИТЕ Id, ProductName, UnitPrice, Package
  ОТ ПРОДУКТА
 ГДЕ ProductName КАК "Ca%"
 

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

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

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

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

ВЫБЕРИТЕ Id, ProductName, UnitPrice, Package
  ОТ ПРОДУКТА
 ГДЕ ProductName КАК 'Cha_' ИЛИ ​​ProductName КАК 'Chan_'
 

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

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

[9 примеров] Объяснение оператора SQL LIKE (MySQL и MS SQL Server)

Оператор LIKE используется для поиска данных столбца по подстановочным знакам . Например:

SELECT * FROM table_name

WHERE col_name LIKE ‘M%’;

Мы использовали разные операторы в разных запросах SQL.Например, равно (=), больше (>), BETWEEN, IN и т. Д.

В этих операторах мы предоставляем значение (я) и сравниваем со столбцом (ями) для выбора строк в таблицах базы данных.

Во многих сценариях мы можем не знать точное значение (особенно в случае строк) для поиска или пользователям нашего приложения требуется видеть все результаты, соответствующие определенному шаблону. Например, выберите все записи из таблицы сотрудников, имена которых начинаются с буквы «M».

Аналогичным образом ищите все записи на основе строкового столбца, который содержит слово «SQL» или содержит слово «Компьютер» в столбце книг и т. Д.

Оператор SQL LIKE позволяет нам искать столбец по заданному шаблону. LIKE использует два подстановочных знака для выполнения поиска:

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

В следующем разделе показан ряд запросов с использованием оператора LIKE SQL с этими подстановочными знаками; так что продолжайте читать.

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

ВЫБРАТЬ * ИЗ имя_таблицы

WHERE match_expression [NOT] LIKE pattern [ESCAPE escape_character];

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

В качестве примеров оператора LIKE я буду использовать демонстрационную таблицу (sto_employees), в которой хранится информация о сотрудниках.

В первом примере запрос возвращает записи всех сотрудников, имена которых начинаются с буквы «J». Посмотрите, как для этого используется знак процента с оператором LIKE:

Запрос:

ВЫБРАТЬ * FROM sto_employees

WHERE emp_name LIKE ‘J%’;

В запросе можно узнать, что если вы поместите знак ‘%’ после символа (ов), он будет искать любое количество символов в указанном столбце перед этим.

Искать только с указанием последнего символа

В приведенном ниже примере возвращаются все записи тех сотрудников, имена которых заканчиваются на «n». Для этого я использовал знак «%» следующим образом:

Запрос LIKE с «%»:

ВЫБРАТЬ emp_name, emp_age, emp_salary

FROM sto_employees

ГДЕ emp_name LIKE ‘% n’;

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

Точно так же вы можете указать два или более символа в конце указанного столбца.Например:

ГДЕ emp_name, например «% on»;

Искать в записях указанный символ в любом месте

В этом операторе SQL LIKE мы получим записи о сотрудниках, имена которых имеют букву «а».

ВЫБРАТЬ emp_name, emp_age, join_date

FROM sto_employees

ГДЕ emp_name LIKE ‘% a%’;

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

Выполнение поиска по шаблону в числовом столбце Примеры

Следующий запрос LIKE выполняет поиск в числовом столбце emp_salary в нашем примере таблицы. Запрос возвращает все записи, в которых зарплата сотрудников начинается с цифры «5». Взглянуть:

Запрос LIKE с числовым столбцом:

ВЫБРАТЬ emp_name, emp_age, emp_salary, join_date

FROM sto_employees

ГДЕ emp_salary КАК ‘5%’;

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

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

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

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

Подстановочный знак подчеркивания заменяет только один символ при использовании с оператором LIKE. См. Запрос об использовании этого подстановочного знака:

ВЫБРАТЬ emp_name, emp_age, emp_salary, join_date

FROM sto_employees

ГДЕ emp_name LIKE ‘Be_’;

Вывод:

В выходных данных запрос извлекает только запись Бена, поэтому одиночное подчеркивание заменено на «n».Вы также можете использовать несколько подстановочных знаков подчеркивания. Например:

ВЫБРАТЬ emp_name, emp_age, emp_salary, join_date

FROM sto_employees

ГДЕ emp_name LIKE ‘Mi__’;

Вы также можете перепутать так:

ВЫБРАТЬ emp_name, emp_age, emp_salary, join_date

FROM sto_employees

ГДЕ emp_name LIKE ‘_im__’;

И результат:

Совместное использование% и _ в операторе LIKE

Следующий запрос возвращает записи для тех сотрудников, имена которых состоят из второй буквы «a» и четвертой буквы «n».

Запрос с _ и%:

ВЫБРАТЬ emp_name, emp_age

FROM sto_employees

ГДЕ emp_name LIKE ‘_a_n%’;

Использование нескольких предложений LIKE в одном запросе

Несколько операторов LIKE можно объединить операторами «И» и «ИЛИ». Итак, если вы хотите искать несколько столбцов, вы можете легко это сделать.

В приведенном ниже запросе используются два оператора LIKE с оператором OR:

ВЫБРАТЬ emp_name, emp_age, emp_salary

FROM sto_employees

ГДЕ emp_name КАК ‘_oh%’ ИЛИ ​​emp_salary КАК ‘5%’;

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

SQL Like — SQL Not Like

SQL LIKE используется с предложением WHERE для поиска шаблона для столбца.Подстановочные знаки — это тот, который используется для указания шаблона.

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

  1. % : Процент используется для представления одного, нескольких или отсутствия вхождения.
  2. _ : подчеркивание используется для представления одного символа.

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

Синтаксис SQL Like

Оператор SQL Like может использоваться с любым запросом с предложением where. Таким образом, мы можем использовать его с Select, Delete, Update и т. Д.

  SELECT column FROM table_name WHERE column LIKE pattern;

ОБНОВЛЕНИЕ имя_таблицы УСТАНОВИТЬ столбец = значение ГДЕ столбец КАК шаблон;

УДАЛИТЬ ИЗ имя_таблицы ГДЕ столбец LIKE pattern;
  

В SQL-подобном синтаксисе, упомянутом выше, «шаблон» — это тот, который определяется использованием подстановочных знаков.

Пример SQL Like

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

CustomerId CustomerName
1 Amit
2 John
3 Annie
  1. Найдите имя клиента, имя которого начинается с буквы «A».
      ВЫБРАТЬ ИМЯ КЛИЕНТА ИЗ Клиента ГДЕ ИМЯ КЛИЕНТА КАК "A%";
      

    Вывод :
    Амит
    Энни

  2. Найдите имя клиента, имя которого заканчивается на «e».
      ВЫБРАТЬ ИМЯ клиента ОТ клиента ГДЕ ИМЯ клиента КАК '% e'
      

    Вывод : Annie

  3. Найдите имя клиента, имя которого начинается с «A» и заканчивается на «t».
      ВЫБРАТЬ ИМЯ клиента ОТ клиента ГДЕ ИМЯ клиента КАК 'A% t'
      

    Выход : Amit

  4. Найдите имя клиента, имя которого содержит «n» в любой позиции.
      ВЫБЕРИТЕ CustomerName ИЗ Customer ГДЕ CustomerName КАК '% n%'
      

    Вывод:
    Annie
    John

  5. Найдите имя клиента, имя которого содержит «n» во второй позиции.
      ВЫБРАТЬ ИМЯ клиента ОТ клиента ГДЕ ИМЯ клиента КАК '_n%'
      

    Вывод : Annie

  6. Найдите имя клиента, имя которого содержит «i» в третьей позиции и заканчивается на «t».
      ВЫБРАТЬ ИМЯ клиента ОТ клиента ГДЕ ИМЯ клиента КАК '__i% t'
      

    Вывод : Amit

SQL Not Like

Иногда нам нужно получить записи, которые не соответствуют подобному шаблону. В этом случае мы можем использовать оператор sql not like.Синтаксис оператора SQL не похож на синтаксис, как показано ниже.

  ВЫБРАТЬ столбец ИЗ имя_таблицы ГДЕ столбец НЕ НРАВИТСЯ шаблон;

ОБНОВЛЕНИЕ имя_таблицы УСТАНОВИТЬ столбец = значение ГДЕ столбец НЕ НРАВИТСЯ шаблон;

УДАЛИТЬ ИЗ имя_таблицы, ГДЕ столбец НЕ НРАВИТСЯ шаблон;
  

В качестве примера предположим, что нам нужен список имен клиентов, которые не начинаются с буквы «А».

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

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