Главная SQL Маски
E-mail Печать PDF

SQL маски могут быть использованы при поиске данных.

SQL маски могут заменить один или более символов при поиске данных в базе данных.

SQL маски должны быть использованы с оператором SQL LIKE.

В SQL доступны следующие маски:

МаскаОписание
% Означает ноль или более символов
_ Означает один символ
[charlist] Любые символы из указанных
[^charlist]

или

[!charlist]

Любые символы кроме указанных

Пример использование масок в SQL

Есть таблица "Persons":

P_IdLastNameFirstNameAddressCity
1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger

Использование %

Теперь мы хотим выбрать всех лиц, которые живут в городе, имя которого начинается с буквы "sa" из таблицы выше.

Для этого используем такой запрос:

1
2
SELECT * FROM Persons
WHERE City LIKE 'sa%'

Результат запроса:

P_IdLastNameFirstNameAddressCity
1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes

Теперь мы хотим выбрать всех лиц, которые живут в городе, имя которого содержит в себе буквы "nes". Не важно, в каком месте будут находиться данные символы, в начале или конце слова.

Для этого используем такой запрос:

1
2
SELECT * FROM Persons
WHERE City LIKE '%nes%'

Результат запроса:

P_IdLastNameFirstNameAddressCity
1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes

Использование _

Теперь мы хотим выбрать всех лиц, которые имеют фамилию, содержащую буквы "la" из таблицы выше.

Для этого используем такой запрос:

1
2
SELECT * FROM Persons
WHERE FirstName LIKE '_la'

Результат запроса:

P_IdLastNameFirstNameAddressCity
1 Hansen Ola Timoteivn 10 Sandnes

Теперь мы хотим выбрать лиц с фамилией, которая начинается с буквы "S", после чего любой символ, а затем "end", после чего любой символ, за которым следует "on"из таблицы "Persons".

Для этого используем такой запрос:

1
2
SELECT * FROM Persons
WHERE LastName LIKE 'S_end_on'

Результат запроса:

P_IdLastNameFirstNameAddressCity
2 Svendson Tove Borgvn 23 Sandnes

Испьзование [charlist]

Теперь мы хотим выбрать лиц с фамилией, которая начинается с "b" или "s" или "p"из таблицы "Persons".

Для этого используем такой запрос:

1
2
SELECT * FROM Persons
WHERE LastName LIKE '[bsp]%'

Результат запроса:

P_IdLastNameFirstNameAddressCity
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger

Теперь мы хотим выбрать лиц с фамилией, которая не начинается с "b" или "s" или "p"из таблицы "Persons".

Для этого используем такой запрос:

1
2
SELECT * FROM Persons
WHERE LastName LIKE '[!bsp]%'

Результат запроса:

P_IdLastNameFirstNameAddressCity
1 Hansen Ola Timoteivn 10 Sandnes

Комментарии

 
+13 #1 Алексей 2009-09-09 17:43 В MS SQL 2000 такая конструкция не работает
SELECT * FROM Persons
WHERE LastName LIKE '[!bsp]%'
т.е. она воспринимает знак "!" как просто знак. Естественно для выборки лиц с фамилией, которая не начинается с "b" или "s" или "p"из таблицы "Persons" работает такая конструкция
SELECT * FROM Persons
WHERE LastName NOT LIKE '[bsp]%'
Цитировать
 
 
+5 #2 villian 2010-06-09 11:33 а '[^bsp]%' тоже не работает? Цитировать
 
 
0 #3 Шелест Константин 2010-10-29 18:22 На SQL Server Management Studio 2005 тоже работает такой код:

SELECT * FROM Persons
WHERE LastName NOT LIKE '[bsp]' а, знак ! принимает как простой символ
Цитировать
 
 
0 #4 Шелест Константин 2010-10-29 18:27 Цитирую villian:
а '[^bsp]%' тоже не работает?


На Server Management Studio 2005 работает )))
Цитировать
 
 
0 #5 Antonio 2012-04-16 17:48 Добрый день. Подскажите пожалуйста правила экранирования, для запроса из php программы.

$query = "SELECT checkin, checkout FROM calendar WHERE id = '$villa' AND (checkin LIKE "'$year_$month%'" OR checkout LIKE "'$year_$month%'")";

Данные в БД хранятся в виде

checkin checkout
2012-01-04 2012-01-06

$year $month переменные из формы.

Спасибо за внимание.
Цитировать
 

Авторизация

Nice Ajax Poll

Какое из моих расширений самое лучшее?

Статистика



Реклама