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:
ID | UniversityName | Students | Faculties | Professores | Location | Site |
1 | Perm State National Research University | 12400 | 12 | 1229 | Perm | psu. ru |
2 | Saint Petersburg State University | 21300 | 24 | 13126 | Saint-Petersburg | spbu.ru |
3 | Novosibirsk State University | 7200 | 13 | 1527 | Novosibirsk | nsu.ru |
4 | Moscow State University | 35100 | 39 | 14358 | Moscow | msu.ru |
5 | Higher School of Economics | 20335 | 12 | 1615 | Moscow | hse.ru |
6 | Ural Federal University | 57000 | 19 | 5640 | Yekaterinburg | urfu.ru |
7 | National Research Nuclear University | 8600 | 10 | 936 | Moscow | mephi.ru |
Пример 1. С помощью оператора SQL LIKE вывести записи университетов, имеющих в своем названии слово «State»:
SELECT * FROM Universities WHERE UniversityName LIKE '%State%'
Результат:
ID | UniversityName | Students | Faculties | Professores | Location | Site |
1 | Perm State National Research University | 12400 | 12 | 1229 | Perm | psu. ru |
2 | Saint Petersburg State University | 21300 | 24 | 13126 | Saint-Petersburg | spbu.ru |
3 | Novosibirsk State University | 7200 | 13 | 1527 | Novosibirsk | nsu.ru |
4 | Moscow State University | 35100 | 39 | 14358 | Moscow | msu.ru |
В этом примере, в качестве шаблона оператора SQL LIKE послужил ‘%State%’. Исходя из условия задачи, слово State может стоять в названии где угодно, поэтому оно обрамлено символом «%», обозначающим строку любой длины перед и после слова.
Пример 2. С помощью оператора SQL LIKE вывести записи университетов, доменное имя сайта которых содержит 4 символа (за исключением домена .ru):
SELECT * FROM Universities WHERE Site LIKE '____.ru'
Результат:
ID | UniversityName | Students | Faculties | Professores | Location | Site |
2 | Saint Petersburg State University | 21300 | 24 | 13126 | Saint-Petersburg | spbu. ru |
6 | Ural Federal University | 57000 | 19 | 5640 | Yekaterinburg | urfu.ru |
Пример 3. С помощью оператора SQL LIKE вывести записи университетов, первая буква доменного имени сайта которых содержит буквы из диапазона [k-o]:
SELECT * FROM Universities WHERE Site LIKE '[k-o]%'
Результат:
ID | UniversityName | Students | Faculties | Professores | Location | Site | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
3 | Novosibirsk State University | 7200 | 13 | 1527 | Novosibirsk | nsu.ru | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
4 | Moscow State University | 35100 | 39 | 14358 | Moscow | msu. e-o]%’ Результат:
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 с операторами «%» и «_».
Где заработная плата, как «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, Синтаксис
ПримерыВсе примеры будут по этой таблице workers, если не сказано иное:
Пример В данном примере команда LIKE найдет
SQL запрос выберет следующие строки:
Пример Давайте выберем те записи, у которых возраст начинается с цифры 2,
SQL запрос выберет следующие строки:
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 SyntaxArgumentsmatch_expression pattern
escape_character Result TypesBoolean Result ValueLIKE 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 LIKELIKE 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 LiteralsYou 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.
Pattern Matching with the ESCAPE ClauseYou 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. ExamplesA. Using LIKE with the % wildcard characterThe 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 charactersThe 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 WarehouseE. Using LIKE with the % wildcard characterThe following example finds all employees in the DimEmployee table with telephone numbers that start with 612 . F. Using NOT LIKE with the % wildcard characterThe following example finds all telephone numbers in the DimEmployee table that don’t start with 612 . . G. Using LIKE with the _ wildcard characterThe 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 используются два подстановочных знака:
Примеры 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 шаблон
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 Hardy | 120 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, может быть очень полезным. Ниже приведены несколько примеров использования регулярных выражений.
- Его можно использовать для идентификации данных, в которых используется комбинация, например номер кредитной или дебетовой карты, адрес электронной почты или номер телефона.
- Найдите определенный текстовый образец или примените фильтр к текстовым, числовым или специальным символьным данным.
- Его можно использовать для анализа данных в 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.А-Я]% ‘
Ниже приводится результат
.
Найти конкретный образец строки
Используя регулярное выражение, мы можем найти определенный текстовый шаблон. Например, я хочу заполнить записи следующими шаблонами:
- Сначала разрешены любые символы (первый%),
- Третий символ должен быть либо I, либо S,
- Четвертый и пятый символ будут SE. Эти символы статичны.
- Пятый символ будет пробелом.
- И после этого разрешен любой символ (последний%).
Чтобы заполнить запись, выполните следующий запрос.
ВЫБРАТЬ * ОТ [адреса_больных] ГДЕ адрес КАК '% [IS] SE []%'
Ниже приводится результат.
Сводка
В этой статье я рассмотрел:
- Что такое регулярное выражение?
- Обзор операторов LIKE и того, как мы можем использовать его в качестве регулярного выражения.
- Различные варианты использования оператора 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 используются два символа подстановки.
- % : Процент используется для представления одного, нескольких или отсутствия вхождения.
- _ : подчеркивание используется для представления одного символа.
Чтобы использовать оператор 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 |
- Найдите имя клиента, имя которого начинается с буквы «A».
ВЫБРАТЬ ИМЯ КЛИЕНТА ИЗ Клиента ГДЕ ИМЯ КЛИЕНТА КАК "A%";
Вывод :
Амит
Энни - Найдите имя клиента, имя которого заканчивается на «e».
ВЫБРАТЬ ИМЯ клиента ОТ клиента ГДЕ ИМЯ клиента КАК '% e'
Вывод : Annie
- Найдите имя клиента, имя которого начинается с «A» и заканчивается на «t».
ВЫБРАТЬ ИМЯ клиента ОТ клиента ГДЕ ИМЯ клиента КАК 'A% t'
Выход : Amit
- Найдите имя клиента, имя которого содержит «n» в любой позиции.
ВЫБЕРИТЕ CustomerName ИЗ Customer ГДЕ CustomerName КАК '% n%'
Вывод:
Annie
John - Найдите имя клиента, имя которого содержит «n» во второй позиции.
ВЫБРАТЬ ИМЯ клиента ОТ клиента ГДЕ ИМЯ клиента КАК '_n%'
Вывод : Annie
- Найдите имя клиента, имя которого содержит «i» в третьей позиции и заканчивается на «t».
ВЫБРАТЬ ИМЯ клиента ОТ клиента ГДЕ ИМЯ клиента КАК '__i% t'
Вывод : Amit
SQL Not Like
Иногда нам нужно получить записи, которые не соответствуют подобному шаблону. В этом случае мы можем использовать оператор sql not like.Синтаксис оператора SQL не похож на синтаксис, как показано ниже.
ВЫБРАТЬ столбец ИЗ имя_таблицы ГДЕ столбец НЕ НРАВИТСЯ шаблон;
ОБНОВЛЕНИЕ имя_таблицы УСТАНОВИТЬ столбец = значение ГДЕ столбец НЕ НРАВИТСЯ шаблон;
УДАЛИТЬ ИЗ имя_таблицы, ГДЕ столбец НЕ НРАВИТСЯ шаблон;
В качестве примера предположим, что нам нужен список имен клиентов, которые не начинаются с буквы «А».