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

Метасимволы

Метасимвол "квадратные скобки" ([ ])

     Метасимвол "квадратные скобки" ([ ]) используется для указания набора символов, каждый из которых должен совпадать со значением, причем точно в указанном месте (в местоположении метасимвола).

Наборы не всегда поддерживаются

В отличие от метасимволов, описанных ранее, использование квадратных скобок для создания наборов многими СУБД не поддерживается. Наборы поддерживаются в СУБД Microsoft Access, Microsoft SQL Server и Sybase Adaptive Server. Обратитесь к документации по вашей СУБД, чтобы определить, поддерживаются ли в ней наборы.

     Например, чтобы найти все контакты людей, имена которых начинаются на букву J или М, необходимо сделать следующее:

SELECT prod_id, prod_name FROM Customers
WHERE cust_contact LIKE '[JM]%' ORDER BY cust_contact;



cust_contact 
--------------------
Jim Jones 
John Smith 
Michelle Green

     Условие WHERE в этом выражении выглядит как ' [ JM] %'. В этом шаблоне поиска используются два разных метасимвола. По метасимволам [JM] производится поиск всех контактных лиц, имена которых начинаются на одну из указанных в скобках букв, но при этом учитывается только один символ. Поэтому все имена длиннее одного символа не будут извлечены. По метасимволу %, следующему после [JM], производится поиск любого количества символов после первой буквы, что и приводит к требуемому результату. 

     Можно использовать метасимвол, выполняющий противоположное действие, добавив перед ним символ ^. Например, в следующем примере выбираются все имена, которые не начинаются с буквы J или М (в отличие от предыдущего примера):

SELECT prod_id, prod_name FROM Customers
WHERE cust_contact LIKE ' [^JM]%' ORDER BY cust_contact;

 

Противоположные наборы в Microsoft Access

Если вы работаете в Microsoft Access и требуется создать противоположный набор, необходимо использовать символ ! вместо ^, поэтому указывайте [! JM] ,а не [^JM].

      Конечно, можно достичь того же результата, воспользовавшись логическим оператором NOT. Единственным преимуществом символа [] является более простой синтаксис при выполнении нескольких предложений WHERE.

Внимание!

Метасимвол ([ ]) поддерживается не всеми СУБД. Обратитесь к документации по вашей СУБД, чтобы определить, поддерживается ли этот метасимвол.