Sql Scholl
Распечатать страницу
Перейти на главную Карта сайта Отправить сообщение

Метасимволы

Метасимвол "знак процента" (%)

     Наиболее часто используемый метасимвол — знак процента (%). В строке поиска % означает найти все вхождения любого символа. Например, чтобы найти все продукты, названия которых начинаются со слова Fish, можно выполнить следующий запрос:

SELECT prod_id, prod_name
FROM Products
WHERE prod_name LIKE 'Fish%'; 



prod_id        prod_name 
-----------    -------------------
BNBGOl         Fish bean bag toy

     В этом примере используется шаблон поиска 'Fish%'. При выполнении этого условия возвращаются все значения, которые начинаются с символов Fish. Знак % указывает СУБД принимать все символы после слова Fish независимо от их количества.

Метасимволы Microsoft Access

Если вы работаете в Microsoft Access, необходимо использовать символ * вместо символа %.

Зависимость от регистра

Ваша СУБД и ее конфигурация могут влиять на то, что поиск будет зависеть от регистра. В этом случае по строке 'fish%'  значение Fish bean bag toy не будет найдено.

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

SELECT prod_id, prod_name
FROM Products
WHERE prod_name LIKE '%bean bag%';



prod_id        prod_name 
------------   -------------------
BNBGOl         Fish bean bag toy
BNBG02         Bird bean bag toy
BNBG03         Rabbit bean bag toy

     Шаблон поиска ' %bean bag%' означает найти все значения, содержащие bean bag в любом месте названия, независимо от количества символов перед или после указанного текста.
     Метасимвол можно также использовать внутри шаблона поиска, хотя это редко бывает полезным. В следующем примере производится поиск всех продуктов, которые начинаются на F и заканчиваются на у:

SELECT prod_name
FROM Products
WHERE prod_name LIKE 'F%y'; 


     Важно отметить, что помимо поиска одного или нескольких символов, знак % также означает и отсутствие символов в указанном месте шаблона поиска.

Следите за замыкающими пробелами

Многие СУБД, включая Microsoft Access, заполняют содержимое поля пробелами. Например, если столбец рассчитан на 50 символов, а в нем вставлен текст Fish bean bag toy (17 символов), то, чтобы заполнить столбец, в него может быть добавлено еще 33 пробела. Обычно это не влияет на данные или их использование, но может негативно отразиться на предыдущем SQL-выражении. По условию WHERE prod_name LIKE 'F%y' будут найдены только те значения prod_name, которые начинаются на F и заканчиваются на у. Если значение заполнено пробелами, оно не будет заканчиваться на у, и значение Fish bean bag toy не будет извлечено. Одним из простых решений может быть добавление второго символа % в шаблон поиска: ' F%y%', после чего будут учитываться символы (пробелы) после буквы у. Но лучше "отрезать" пробелы при помощи функций, которые обсуждаются в разделе, "Использование функций манипулирования данными".