Читайте также:
|
|
При поиске частичных соответствий строк интерес могут представлять:
• Строки, начинающиеся/заканчивающиеся определенным символом
• Строки, начинающиеся/заканчивающиеся подстрокой
• Строки, содержащие определенный символ в любом месте строки
• Строки, содержащие подстроку в любом месте строки
• Строки определенного формата, независимо от входящих в них от_ дельных символов
С помощью символов маски, представленных в табл. 4.4, можно по_ строить выражения для поиска этих и многих других частичных стро_ ковых соответствий.
Таблица 4.4. Символы маски
Символ маски | Соответствие |
_ | Точно один символ |
% | Любое число символов (в том числе ни одного) |
Символ подчеркивания замещает один символ, а символ процента мо_ жет замещать разное количество символов. При построении условий, использующих выражения поиска, применяется оператор like (как):
mysql> SELECT lname
84 Глава 4. Фильтрация
_> FROM employee
_> WHERE lname LIKE '_a%e%';
+___________+ | lname | +___________+
| Barker | | |
| Hawthorne | | |
| Parker | | |
| Jameson | | |
+___________+
4 rows in set (0.00 sec)
Выражение поиска в предыдущем примере определяет строки, содер_ жащие «а» во второй позиции, за которым следует «е» в любом другом месте строки (включая последний символ). В табл. 4.5 показано еще несколько выражений поиска и их интерпретации.
Таблица 4.5. Примеры выражений поиска
Выражение поиска | Интерпретация |
F% | Строки, начинающиеся с «F» |
%t | Строки, заканчивающиеся на «t» |
%bas% | Строки, содержащие подстроку «bas» |
__t_ | Строки, состоящие из четырех символов с «t» в третьей |
позиции | |
___________ | Строки из 11 символов, где четвертый и седьмой симво_ |
лы – дефисы | |
Последний пример из табл. 4.5 можно использовать для поиска клиен_ тов, федеральный ID которых соответствует формату, используемому для номеров социальной страховки:
mysql> SELECT cust_id, fed_id _> FROM customer
_> WHERE fed_id LIKE '___________';
+_________+_____________+ | cust_id | fed_id | +_________+_____________+
| | | 111_11_1111 | | ||
| | | 222_22_2222 | | ||
| | | 333_33_3333 | | ||
| | | 444_44_4444 | | ||
| | | 555_55_5555 | | ||
| | | 666_66_6666 | | | |
| | | 777_77_7777 | | | |
| | | 888_88_8888 | | | |
| | | 999_99_9999 | | |
+_________+_____________+ 9 rows in set (0.02 sec)
Типы условий | |
Символы маски хороши для простых выражений поиска. Если требу_ ется несколько более сложный поиск, можно использовать несколько выражений поиска, как показано в следующем примере:
mysql> SELECT emp_id, fname, lname _> FROM employee
_> WHERE | lname LIKE 'F%' OR lname LIKE 'G%'; | |||
+________+_______+__________+ | ||||
| emp_id | fname | lname | | | |||
+________+_______+__________+ | ||||
| | | John | | Gooding | | | |
| | | Helen | | Fleming | | | |
| | | Jane | | Grossman | | ||
| | | Beth | | Fowler | | | |
+________+_______+__________+ | ||||
rows in set (0.00 sec) |
Этот запрос находит всех сотрудников, фамилия которых начинается с «F» или «G».
Дата добавления: 2015-08-17; просмотров: 56 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Оператор not in | | | Регулярные выражения |