Wildcards

SQL заместващи символи

Така наречените заместващи символи се използват – не изненадващо – да заместят който и да е символ в даден низ. Тъй като на български израза заместващи символи не е точно като англоезичният термин, нека да изполваме занапред в урока англоезичният. И да не забравяме, че навсякъде по света се програмира на български! Ъмм… тоест на английски :). Та, тези заместващи символи се наричат wildcards. Тези wildcards се използват с оператора LIKE. Операторът LIKE се използва в съчетание с клауза WHERE за търсене на даден шаблон в колона.

Има две wildcards, използвани в съчетание с оператора LIKE:

  • % – знакът за процент представлява нула, един или няколко знака
  • _ – долна черта представлява единичен знак

Забележка: MS Access използва въпросителен знак (?) вместо долна черта (_). В MS Access и SQL Server можете да използвате и:

  • [charlist] – Определя множества и диапазони от символи, които да съответстват
  • [^ charlist] или [! charlist] – Определя множества и диапазони на символите които НЕ съвпадат

wildcards могат да се използват и в комбинации! Ето няколко примера, показващи различни употреби с оператора LIKE и „%“ и „_“ wildcards:

LIKE Operator Описание
WHERE CustomerName LIKE ‘a%’ Намира коя да е стойност започваща с „a“
WHERE CustomerName LIKE ‘%a’ Намира коя да е стойност завършваща с „a“
WHERE CustomerName LIKE ‘%or%’ Намира коя да е стойност, която съдържа „or“ на която и да е позиция
WHERE CustomerName LIKE ‘_r%’ Намира коя да е стойност, която съдържа в себе си „r“ на втора позиция
WHERE CustomerName LIKE ‘a_%_%’ Намира коя да е стойност започваща с „a“ и е с дължина поне 3 символа
WHERE ContactName LIKE ‘a%o’ Намира коя да е стойност започваща с „a“ и завършва с „o“

Демо база данни

По-долу има селекция от таблицата „Customers“ в примерната база данни на Northwind:
CustomerID CustomerName ContactName Address City PostalCode Country
1

Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 12209 Germany
2 Ana Trujillo Emparedados y helados Ana Trujillo Avda. de la Constitución 2222 México D.F. 05021 Mexico
3 Antonio Moreno Taquería Antonio Moreno Mataderos 2312 México D.F. 05023 Mexico
4

Around the Horn Thomas Hardy 120 Hanover Sq. London WA1 1DP UK
5 Berglunds snabbköp Christina Berglund Berguvsvägen 8 Luleå S-958 22 Sweden

Използване на %

Следният SQL израз избира всички записи, от колоната City които започват с „ber“:

Опитайте сами »

Следният SQL израз избира всички записи от колоната City, съдържащи шаблона „es“:

Опитайте сами »

Използване на _

Следният SQL израз избира всички записи от колоната City, започващи с кой да е знак, последван от „erlin“:

Опитайте сами »

Следният SQL израз избира всички записи от колоната City, започващи с „L“, следвани от кой да е знак, следван от „n“, следван от кой да е знак, следван от „on“:

Опитайте сами »

Използване на [charlist] Wildcard

Следният SQL израз избира всички записи от колоната City, започващи с „b“, „s“ или „p“:

Опитайте сами »

Следният SQL израз избира всички записи от колоната City, започващи с „a“, „b“ или „c“:

Опитайте сами »

Използване на [!charlist] Wildcard

Следващите две SQL заявки селектират всички записи от колоната City, които НЕ започват с „b“, „s“, или „p“:

Опитайте сами »
Опитайте сами »