Sql like маска: LIKE (Transact-SQL) — SQL Server

SQL и флаги / Хабр

Конечно же речь пойдёт не о режиме игры Capture The Flag на сервере SQL, а об использования bit флагов. Битовые операции знакомы, наверное, всем, кто занимается панорамированием, независимо от среды и языка разработки. Однако использование флагов, на мой взгляд, для многих является экзотикой нежели повседневным инструментом. На Хабре не раз упоминали возможность удобную возможность .NET работать с флагами через enum, но ведь и SQL даёт нам отличные возможности для использования флагов!

И так, рассмотрим простой пример — в некой аппликации должна быть некая система оповещения пользователей. Допустим вы строите форум и хотите дать возможность пользователю получать оповещения по почте: новый ответ в избранной теме, новое личное сообщение, новости форума.Беглый взгляд на задачу даст тривиальный дизайн таблиц:
tblUsers {userID (PK) as int, name as nvarchar(50), password as nvarchar(50)}
tblUserAlerts {userID (FK) as int, alertID (FK) as int}

tblAlerts{alertID (PK) as int, message as nvarchar(50)}

То есть существует таблица пользователей, таблица оповещений и связь между ними реализуется через вспомогательную таблицу дабы дать возможность каждому пользователю выбрать больше чем одно оповещение. Данные будут выглядеть примерно так:
tblUsers
1, «Вася», «хитрыйп4р0ль»

tblUserAlerts
1, 1

tblAlerts
1, «Вам пришло новое личное сообщение»

А теперь рассмотрим пример с пользованием флага:
tblUsers {userID (PK) as int, name as nvarchar(50), password as nvarchar(50), alerts as int},
tblAlerts{alertID (PK) as int, message as nvarchar(50)}

В данном варианте мы получаем ту же функциональность и при этом обходимся без дополнительной таблицы. В таблице tblAlerts мы задаём alertID как бит флаг с помощью то го же int (размер зависит от количества вариантов оповещений), а в таблице tblUsers поле alerts отображает бит маску оповещений. Допустим мы создаём 3 вида оповещений, значит в таблице tblAlerts будет 4 (нет оповещений + упомянутые 3 вида) строки флагами в поле alertID. Первым ID будет 0 — в битах будет выглядеть как 0000, значение, соответственно — нет оповещений. Затем мы добавляем наши оповещения зажигая каждый раз другой бит (каждый идентификатор будет степенью двойки ): 0001 = 1, 0010 = 2, 0100 = 4:

tblAlerts
0, NULL
1, «Новый ответ в избранной теме»
2, «Вам пришло новое личное сообщение»
4, «У нас новость!»

Теперь нам надо подписать пользователя, допустим, на новости и на оповещения о личных сообщения. Для этого мы суммируем идентификаторы этих оповещений и получаем 0110 = 6:
tblUsers
1, «Вася», «хитрыйп4р0ль», 6

Теперь построим запрос в таблицу tblUsers, чтобы узнать кто из пользователей подписан на новости:

SELECT * FROM tblUsers WHERE (tblUsers.alert & 4) > 0

Смысл данной операции прост:
0110 — наша маска
0100 — флаг новостей
0100 — результат ( то есть есть есть пересечение маски и флага, то результат будет больше нуля )

Приятный аспект — можно сравнивать и маски. Допустим мы хотим получить список пользователей подписанных на все виды оповещений 1+2+4 = 7:
SELECT * FROM tblUsers WHERE (tblUsers.alert & 7) = 7

Заметьте, что между маской 6 и 7 есть пересечение, но результат будет отличным от 7
0110 — маска пользователя
0111 — маска проверки
0110 — результат (пересечение или минимум из 7 и 6 = 6)

С той же лёгкостью можно сделать запрос на список пользователей подписанных либо на оповещение об ответах либо на уведомление о личных сообщениях 1+2 = 3:

SELECT * FROM tblUsers WHERE (tblUsers. alert & 3) > 0

Положительным результатом будет считаться проверка маски пользователя со значениями и 1, и 2, и 3 (то есть либо одно из двух оповещений, либо оба).

Вот таким нехитрым образом можно избавиться от связующей таблицы и даже упростить запросы. Однако минусом может стать не возможность сделать некоторые действия ( допустим JOIN ) через стандартный визуальный редактор запросов, так как стандарт будет сравнивать идентификаторы. Надо будет в ручную заменять сравнение на битовую операцию:
SELECT tblUsers.*, tblAlerts.*
FROM tblUsers INNER JOIN tblAlerts ON (tblUsers.alerts & tblAlerts.alertID) = tblAlerts.alertID

Язык sql FoxPro 5.0

СУБД FoxPro, за многие годы своей эволюции, накопила колоссальное количество стандартных операций, функций и условий (предикатов), с которыми программист знакомится по мере освоения системы. В принципе, все эти возможности можно использовать во вложенном SQL (при соблюдении некоторых мер осторожности, что особенно относится к использованию пользовательских функций).

С другой стороны, SQL образует вполне изолированный подъязык FoxPro, отличный от него по духу и синтаксису: в отличие от «базового» FoxPro, SQL является декларативным языком преобразований таблиц в целом, а не процедурным языком обработки их записей; синтаксис команд SQL замкнут и не содержит ссылок на текущее состояние окружение, столь многочисленных в командах FoxPro.

Щадя читателя и следуя принципу «разумной достаточности», мы далее немного упрощаем синтаксис — в основном, за счет исключения синонимии и редко используемых опций. Наиболее полный синтаксис FoxPro SQL, как всегда, можно найти в справочной системе FoxPro, на которую мы в дальнейшем будем ссылаться как на “документацию”. Расширения языка, отсутствующие в стандарте (и, возможно — в используемой читателем версии) SQL отмечены символом *

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

SQL FoxPro образуют замкнутый язык СУБД, достаточный для выполнения основных задач обработки локальных данных, а также обработки удаленных данных в рамках технологии удаленных представлений. Главное достоинство последней — простота; от программиста скрыты все детали реализации обработки данных на удаленном источнике (сервере) в терминах его собственной версии SQL.

Поддерживаемый также FoxPro аппарат «сквозного SQL» , или технологии SPT (SQL-pass-through) более эффективен, но и более изощрен — кроме знания достаточно обширного дополнительного набора функций SQL, он предполагает и знание версии SQL, «работающей» на сервере. Любознательный читатель, как всегда, может найти отсутствующую в настоящем пособии информацию о “сквозном SQL”в справочной системе FoxPro.

Выражения и предикаты в SQL.

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

а) Сравнения

Аргумент1 Знак_сравнения Аргумент2

где знак сравнения — один из символов отношений = (равенство), <>, !=, # (неравенство) и >, >=,<,<=, а также, для символьных строк, == (точное равенство) и [NOT] LIKE (сравнение по маске),

Заметьте, что, если для числовых типов и типа «дата» такие сравнения имеют обычный смысл, то для символьных строк имеется ввиду лексикографическое (словарное) сравнение, а равенство = несимметрично и понимается в FoxPro как вхождение второго аргумента в первый как начального подслова (см. документацию о зависимости такого сравнения от установок системных переменных ANSI и EXACT).

Предикат сравнения по маске имеет вид

Аргумент [NOT] LIKE Маска

где Маска — произвольная символьная строка, (возможно) содержащая специальные символы кратной замены % и одиночной замены _. Предикат [NOT] LIKE считается истинным, если маску можно превратить в стоящий слева аргумент подстановкой некоторых слов вместо символа % и одиночных символов — вместо символов _.

б) Булевские формулы, как обычно, образуются с помощью операций конъюнкции AND, дизъюнкции OR и отрицания NOT

в) «Синтаксический сахар» — группа предикатов, выразимых через булевские комбинации сравнений, но более кратких и привычных по форме (для англоязычного пользователя)

Аргумент1 [NOT] BETWEEN Аргумент2 AND Аргумент3

— краткая форма записи предиката

[NOT] (Аргумент2 Аргумент1 AND Аргумент1Аргумент3)

Аргумент [NOT] IN (список_значений)

— краткая форма записи предиката

[NOT] (Аргумент=Аргумент1 OR АргументАргумент2 OR … Аргумент=АргументN)

г) Предикаты, использующие выборку

Имя_поля Знак_сравнения ALL (команда SELECT)

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

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

Имя_поля Знак_сравнения ANY | SOME (команда SELECT)

истинно, если сравнение выполняется для стоящего слева значения поля и хотя бы одного из значений, выбранных командой SELECT — снова предполагается, что последняя выдает список значений, соместимых по типу со значением поля. Если подвыборка пуста, условие считается ложным.

[NOT] EXISTS (команда_SELECT)

истинно, если подвыборка (не) пуста, т.е. (не) содержит по крайней мере одну строку.

Имя_поля [NOT] IN (команда_SELECT)

имеет тот же смысл, что и одноименный предикат IN, рассмотренный выше, с той лишь разницей, что список значений не задается явно, но является результатом подвыборки; истинен, если значение поля совпадает хотя бы с одним значением из (единственного поля) результата выборки.

[ ] Подстановочный знак для соответствия символам — SQL Server (Transact-SQL)

Редактировать

Твиттер LinkedIn Фейсбук Электронная почта

  • Статья

Применяется к: SQL Server База данных SQL Azure Azure SQL Управляемый экземпляр Azure Synapse Analytics Analytics Platform System (PDW) Конечная точка SQL в Microsoft Fabric Warehouse в Microsoft Fabric

Соответствует любому одиночному символу в указанном диапазоне или наборе, указанном в квадратных скобках [ ] . Эти подстановочные знаки можно использовать при сравнении строк, включающем сопоставление с образцом, например LIKE и PATINDEX .

Примеры

A: Простой пример

В следующем примере возвращаются имена, начинающиеся с буквы m . [n-z] указывает, что вторая буква должна быть где-то в диапазоне от n до z . Подстановочный знак процента % допускает использование любых символов или их отсутствие, начиная с символа 3. Базы данных model и msdb соответствуют этому критерию. База данных master не соответствует критериям и исключена из набора результатов.

 ВЫБЕРИТЕ имя ИЗ sys.databases
ГДЕ имя LIKE 'm[n-z]%';
 

Вот набор результатов.

 имя
-----
модель
msdb
 

Возможно, у вас установлены дополнительные подходящие базы данных.

B: Более сложный пример

В следующем примере используется оператор [] для поиска идентификаторов и имен всех сотрудников Adventure Works, чьи адреса имеют четырехзначный почтовый индекс.

 -- Использует AdventureWorks
  
ВЫБЕРИТЕ e.BusinessEntityID, p.FirstName, p.LastName, a.PostalCode
ОТ HumanResources.Employee AS e
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Person.Person AS p ON e.BusinessEntityID = p.BusinessEntityID
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Person.BusinessEntityAddress AS ea ON e.BusinessEntityID = ea.BusinessEntityID
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Person.Address AS a.AddressID = ea.AddressID
ГДЕ a.PostalCode LIKE '[0-9][0-9][0-9][0-9]';
 

Вот набор результатов.

 ID сотрудника Имя Фамилия Почтовый индекс
---------- --------- --------- ----------
290 Линн Цофлиас 3000
 

C: Использование набора, объединяющего диапазоны и отдельные символы

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

 ВЫБРАТЬ [object_id], OBJECT_NAME(object_id) AS [object_name], name, column_id
ИЗ sys.columns
ГДЕ имя LIKE '[0-9!@#$.,;_]%';
 

Вот набор результатов.

 object_id object_name имя column_id
--------- ----------- ---- ---------
615673241 vSalesPersonSalesByFiscalYears 2002 5
615673241 vSalesPersonSalesByFiscalYears 2003 6
615673241 vSalesPersonSalesByFiscalYears 2004 7
15718 JunkTable _xyz 1
 9] (Подстановочный знак — несоответствие символов) (Transact-SQL) 
_ (Подстановочный знак — соответствие одному символу) (Transact-SQL)

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

❮ Предыдущий Далее ❯


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

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

Символы подстановки используются с НРАВИТСЯ оператор. Оператор LIKE используется в Предложение WHERE для поиска указанного шаблона в столбце.

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

Символ Описание Пример
* Представляет ноль или более символов bl* находит bl, black, blue и blob
? Представляет один символ h?t находит горячее, шляпу и хит
[] Представляет любой одиночный символ в квадратных скобках h[o]t находит горячее и шляпу, но не попадает
! Представляет любой символ, не указанный в квадратных скобках h[!oa]t находит попадание, но не горячее и шляпу
- Представляет любой одиночный символ в указанном диапазоне c[a-b]t находит кошку и cbt
# Представляет любой одиночный цифровой символ 2#5 находит 205, 215, 225, 235, 245, 255, 265, 275, 285 и 295

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

9oa]t находит хит, но не горячий и шляпа
Символ Описание Пример
% Представляет ноль или более символов bl% находит bl, black, blue и blob
_ Представляет один символ h_t находит горячее, шляпу и нажимает
- Представляет любой одиночный символ в указанном диапазоне c[a-b]t находит кошку и cbt

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

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

Оператор LIKE Описание
ГДЕ CustomerName LIKE 'a%' Находит все значения, начинающиеся с "а"
ГДЕ CustomerName LIKE '%a' Находит все значения, оканчивающиеся на "а"
ГДЕ CustomerName LIKE '%or%' Находит все значения, которые имеют "или" в любой позиции
ГДЕ CustomerName LIKE '_r%' Находит любые значения, которые содержат "r" во второй позиции
ГДЕ CustomerName LIKE 'a__%' Находит любые значения, начинающиеся с "а" и имеющие длину не менее 3 символов
ГДЕ ContactName LIKE 'a%o' Находит все значения, начинающиеся с "а" и заканчивающиеся на "о"

Демонстрационная база данных

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

90 115 Германия
CustomerID CustomerName ContactName 901 08 Адрес Город Почтовый индекс Страна
1 Альфред Футтеркисте Мария Андерс ул. 57 Берлин 12209 Германия
2 Ана Трухильо Emparedados y helados Ана Трухильо Avda. de la Constitución 2222 México D.F. 05021 Мексика
3 Антонио Морено Такерия Антонио Морено Матадерос 2312 Мексика Д.Ф. 05023 Мексика
4 Вокруг Рога Томас Харди 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 Блондель отец и сын Фредерик Сито 24, площадь Клебер Страсбург 67000 9 0116 Франция
8 Bólido Comidas preparadas Martin Sommer C/ Araquil, 67 Madrid 28023 Испания
9 Bon app' Laurence Lebihans 12, rue des Bouchers Марсель 13008 Франция
10 Нижний рынок доллара Элизабет Линкольн 23 Tsawassen Blvd. Тсавассен T2F 8M4 Канада
11 B's Beverages Victoria Ashworth Цирк Фаунтлерой Лондон EC2 5NT Великобритания
12 Cactus Comidas para llevar Patricio Simpson Cerrito 333 Buenos Aires 1010 Аргентина
13 Торговый центр Моктесума Франсиско Чанг Сьеррас-де-Гранада 9993 Мексика Д.Ф. 05022 Мексика
14 Чоп-суэй Китайский Ян Ван Hauptstr. 29 Берн 3012 Швейцария
15 Comércio Mineiro Pedro Afonso Av. dos Lusíadas, 23 Сан-Паулу 05432-043 Бразилия
16 Consolidated Holdings Элизабет Браун Berkeley Gardens 12 Brewery Лондон WX1 6LT Великобритания
17 Драхенблют Деликатессенд Свен Отлиб Вальзервег 21 Ахен 52066
18 Du monde entier Жанин Лабрюн 67, rue des Cinquante Otages Нант 44000 901 16 Франция
19 Eastern Connection Энн Девон 35 Кинг Джордж Лондон WX3 6FW Великобритания
20 Эрнст Гендель Роланд Мендель Кирхгассе 6 Грац 8010 Австрия
21 Семья Аркибальдо Ария Круз Руа Орос, 92 Сан-Паулу 05442-030 Бразилия
22 FISSA Fabrica Inter. Салчичас С.А. Диего Роэль С/ Моралзарзал, 86 Мадрид 28034 Испания
23 Фоли для гурманов Мартин Рансе 184, шоссе де Турне Лилль 59000 Франция
24 Фольклорная и фольклорная HB Мария Ларссон Окергатан 24 Браке С-844 67 Швеция
25 Франкенверсанд Питер Франкен Берлинер Платц 43 Мюнхен 80805 Германия
26 Франция реставрация Карин Шмитт 54, улица Рояль Нант 44000 Франция
27 Франки С.п.А. Паоло Аккорти Виа Монте Бьянко 34 Турин 10100 Италия
28 Furia Bacalhau e Frutos do Mar Лино Родригес Jardim das rosas n. 32 Лиссабон 1675 Португалия
29 Галерея гастрономии Эдуардо Сааведра Rambla de Cataluña, 23 Барселона 08022 Испания
30 Godos Cocina Типика Хосе Педро Фрейре С/ Ромеро, 33 Севилья 41101 Испания
31 Ланчонетес для гурманов Андре Фонсека пр. Бразилия, 442 Кампинас 04876-786 Бразилия
32 Продовольственный рынок Великих озер Говард Снайдер 2732 Бейкер бул. Юджин 97403 США
33 GROSELLA-Ресторан Мануэль Перейра 5ª Авеню Лос Палос Грандес Каракас 1081 Венесуэла
34 Ханари Карнес Марио Понтес Руа-ду-Пасу, 67 Рио-де-Жанейро 05454-876 Бразилия
35 ИЛАРИОН-Абастос Карлос Эрнандес Carrera 22 con Ave. Carlos Soublette #8-35 Сан-Кристобаль 5022 Венесуэла
36 Магазин импорта голодных койотов Йоши Латимер City Center Plaza 516 Main St. Элгин 97827 США
37 Ночные бакалейщики Hungry Owl Патрисия МакКенна 8 Джонстаун Роуд Пробка Ирландия
38 Островная торговля Хелен Беннет Садовый домик Кроутер Уэй Коус ПО31 7ПЖ Великобритания
39 Кениглих Эссен Филип Крамер Мобельштрассе. 90 Бранденбург 14776 Германия
40 Улица изобилия Даниэль Тонини 67, проспект Европы Версаль 78000 Франция
41 Дом Азии Аннет Руле 1 улица Эльзас-Лотарингия Тулуза 31000 Франция
42 Винные погреба Смеющегося Вакха Йоши Таннамури 1900 Дубовая ул. Ванкувер В3Ф 2К1 Канада
43 Загородный магазин Lazy K Джон Стил 12 Оркестровая терраса Уолла Уолла 99362 США
44 Рыночная площадь Леманнс Ренате Месснер Магазинвег 7 Франкфурт-на-Майне 60528 Германия
45 Давайте остановимся в магазине Хайме Йоррес 87 Полк Стрит Люкс 5 Сан-Франциско 94117 США
46 ЛИЛА-Супермаркет Карлос Гонсалес Carrera 52 con Ave. Bolívar #65-98 Llano Largo Баркизимето 3508 Венесуэла
47 ЛИНО-Деликатесы Фелипе Искьердо Авеню 5 де Майо Порламар И. де Маргарита 4980 Венесуэла
48 Ресторан «Одинокая сосна» Фрэн Уилсон 89 Chiaroscuro Rd. Портленд 97219 США
49 Магазин Алиментари Риунити Джованни Ровелли Виа Людовико иль Моро 22 Бергамо 24100 Италия
50 Дом Дьюи Кэтрин Дьюи Рю Жозеф-Бенс 532 Брюссель Б-1180 Бельгия
51 Мама Пайярд Жан Френьер 43 улица Сен-Лоран Монреаль h2J 1C3 Канада
52 Моргенштерн Гезундкость Александр Фойер Херстр. 22 Лейпциг 04179 Германия
53 Север/Юг Саймон Кроутер Южный дом 300 Квинсбридж Лондон СВ7 1РЗ Великобритания
54 Океано Атлантико Лтд. Ивонн Монкада Инж. Густаво Монкада 8585 Писо 20-А Буэнос-Айрес 1010 Аргентина
55 Деликатесы Старого Света Рене Филлипс 2743 ул. Беринга Анкоридж 99508 США
56 Оттилис Каселаден Генриетта Пфальцхайм Мерхаймерштрассе. 369 Кёльн 50739 Германия
57 Специальные предложения Парижа Мари Бертран 265, бульвар Шарон Париж 75012 Франция
58 Перикл Классические товарищи Гильермо Фернандес Calle Dr. Jorge Cash 321 Мексика Д.Ф. 05033 Мексика
59 Пикколо и больше Георг Пиппс Гейсльвег 14 Зальцбург 5020 Австрия
60 Принцесса Изабель Винхос Изабель де Кастро Estrada da saúde n. 58 Лиссабон 1756 Португалия
61 Кве Делисия Бернардо Батиста Руа да Панификадора, 12 Рио-де-Жанейро 02389-673 Бразилия
62 Королева Козинья Лусия Карвалью Аламеда-дус-Канариос, 891 Сан-Паулу 05487-020 Бразилия
63 БЫСТРАЯ ОСТАНОВКА Хорст Клосс Таухерштрассе 10 Куневальде 01307 Германия
64 Ранчо Гранде Серхио Гутьеррес пр. дель Либертадор 900 Буэнос-Айрес 1010 Аргентина
65 Продуктовый магазин «Каньон гремучей змеи» Пола Уилсон 2817 Милтон Доктор Альбукерке 87110 США
66 Реджани Казеичи Маурицио Морони Страда Провинциале 124 Реджо-Эмилия 42100 Италия
67 Рикардо Адосикадос Джанет Лимейра пр. Копакабана, 267 Рио-де-Жанейро 02389-890 Бразилия
68 Рихтер Супермаркет Майкл Хольц Гренцахервег 237 Женева 1203 Швейцария
69 Ромеро и Томилло Алехандра Камино Гран Виа, 1 Мадрид 28001 Испания
70 Санте Гурмэ Йонас Бергульфсен Ворота Эрлинг Скаккес 78 Ставерн 4110 Норвегия
71 Рынки, где можно сэкономить Хосе Паваротти 187 Саффолк Лн. Бойсе 83720 США
72 Импорт семи морей Хари Кумар 90 Уодхерст Роуд. Лондон ОХ15 4НБ Великобритания
73 Саймонс бистро Джитте Петерсен Винбелтет 34 Копенгаген 1734 Дания
74 Особые заведения мира Доминик Перрье 25, улица Лористон Париж 75016 Франция
75 Пиво и эль Split Rail Арт Брауншвайгер Почтовый индекс Ящик 555 Посадочный модуль 82520 США
76 Высшие деликатесы Тележка Паскаля Бульвар Тиру, 255 Шарлеруа Б-6000 Бельгия
77 Большой сыр Лиз Никсон 89 Джефферсон Уэй Люкс 2 Портленд 97201 США
78 Коробка с крекерами Лю Вонг 55 Гризли Пик Роуд. Бьютт 59801 США
79 Toms Spezialitäten Карин Джозефс Луизенштрассе. 48 Мюнстер 44087 Германия
80 Ресторан Тортуга Мигель Анхель Паолино Авда. Ацтека 123 Мексика Д.Ф. 05033 Мексика
81 Традиционный гипермаркет Анабела Домингес пр. Инес де Кастро, 414 Сан-Паулу 05634-030 Бразилия
82 Припасы для гурманов Trail's Head Гельвеций Надь Бульвар Да Винчи, 722 Киркланд 98034 США
83 Ваффельджернет Палле Ибсен Смагслёгет 45 Орхус 8200 Дания
84 Виктуаль на складе Мэри Савели 2, улица Коммерс Лион 69004 Франция
85 Винные и спиртные напитки Chevalier Поль Энрио 59 улица де л'Аббай Реймс 51100 Франция
86 Die Wandernde Kuh Рита Мюллер Аденауэралле 900 Штутгарт 70563 Германия
87 Вартиан Херкку Пиркко Коскитало Торикату 38 Оулу Финляндия
88 Веллингтон Импортадора Паула Паренте Руа-ду-Меркадо, 12 Резенде 08737-363 Бразилия
89 Рынки белого клевера Карл Яблонски 305 - 14-я авеню С. Люкс 3B Сиэтл 98128 США
90 Уилман Кала Матти Карттунен Кескускату 45 Хельсинки 21240 Финляндия
91 Вольский Збышек ул. Фильтрова 68 Валла 01-012 Польша



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

Следующая инструкция SQL выбирает всех клиентов с городом, начинающимся с "ber":

Пример

SELECT * FROM Customers
WHERE City LIKE 'ber%';

Попробуйте сами »

Следующая инструкция SQL выбирает всех клиентов с городом, содержащим шаблон "es": 

Пример

SELECT * FROM Customers
WHERE City LIKE '%es%';

Попробуйте сами »


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

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

Пример

SELECT * FROM Customers
WHERE City LIKE '_ondon';

Попробуйте сами »

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

Пример

SELECT * FROM Customers
WHERE City LIKE 'L_n_on';

Попробуйте сами »


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

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

Пример

SELECT * FROM Customers
WHERE City LIKE '[bsp]%';

Попробуйте сами »

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

Пример

SELECT * FROM Customers
WHERE City LIKE '[a-c]%';

Попробуйте сами »


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

Два следующих SQL-оператора выбирают всех клиентов, у которых город НЕ начинается.

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

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

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