Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Проверка на пустое значение




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

<значение> IS NULL

и

<значение> IS NOT NULL

Еще раз повторю, это действительно может стать источником больших ошибок — перед обычной, нормальной, проверкой проверяйте значения на NULL.

Поиск в строковых столбцах

Для строковых значений используются варианты LIKE, CONTAINING и STARTING WITH. Напомню синтаксис:

...

| <значение> [NOT] LIKE <значение>

| <значение> [NOT] CONTAINING <значение>

| <значение> [NOT] STARTING [WITH] <значение>

...

Вариант LIKE

В варианте LIKE строковое значение должно содержать указанные символы.

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

Выберем строки из таблицы PERSON, введя условие, по которому фамилия должна заканчиваться на "ОВ". Для этого перед буквами "ОВ" используем шаблонный символ %.[19]

SELECT PR_NAME2 AS "Имя",

PR_NAME3 AS "Отчество",

PR_NAME AS "Фамилия"

FROM PERSON

WHERE PR_NAME LIKE '%ов'

Листинг 12. Выборка людей в варианте LIKE '%в'

Имя Отчество Фамилия
Максим Владимирович Бычков
Олег Владимирович Лядов
Евгений Андреевнич Болотов
Олег Сергеевич Феофилактов
Явар Гейдар Джафаров
Александр Михайлович Жданов
Алексей Викторович Лобанов
Сергей Анатольевич Лубов
Алексей Олегович Львов
Станислав Витальевич Приданников
Сергей Анатольевич Ременников
Эдуард Владимирович Седов
Олег Николаевич Фролов
Александр Александрович Чудинов
Николай Викторович Шатров
Руслан Рафаилович Амерзянов
Константин Игоревич Баталов
Сергей Валерьевич Бутаков
Василий Александрович Глазов
Дмитрий Федорович Глумов
Михаил Валерьевич Ермаков
Максим Владимирович Захаров
Илья Борисович Карманов
Владимир Николаевич Карпов
Вячеслав Валерьевич Красногоров
Станислав Евгеньевич Кузнецов
Олег Александрович Куликов
Максим Николаевич Кучеров
Владимир Николаевич Лобанов
Дмитрий Алексеевич Назаров
Дмитрий Аресентьевич Наумов
Эдуард Булатович Нигаметзянов
Алексей Викторович Спешков
Петр Сергеевич Теплоухов

Расширим условие поиска, выполним:[20]

SELECT PR_NAME2 AS "Имя",

PR_NAME3 AS "Отчество",

PR_NAME AS "Фамилия"

FROM PERSON

WHERE UPPER( PR_NAME ) LIKE '%ов%'

Мы добавили еще знак процента в условие: LIKE '%ов%'. То есть не только до, но и после символов "ов" может располагаться любое, в том числе и нулевое, количество любых символов. Теперь мы также получаем и женские фамилии.

Поскольку вариант LIKE является чувствительным к регистру, у вас, казалось бы, должны быть сложности при поиске данных, если вы не следовали моим мудрым советам и не вводили подобные строки в верхнем регистре. На самом деле ничего особенно страшного не произойдет. Даже если данные у вас введены вперемежку и прописными, и строчными буквами, вы можете использовать функцию UPPER, которая переведет все буквы строки в верхний регистр. Повторю — это относится только к символам алфавита, поддерживаемого вашим набором символов для этого столбца. Предыдущий запрос можно записать следующим образом: [21]

SELECT PR_NAME2 AS "Имя",

PR_NAME3 AS "Отчество",

PR_NAME AS "Фамилия"

FROM PERSON

WHERE UPPER( PR_NAME ) LIKE '%ов%'

 

Теперь покажем как воспользоваться знаком подчеркивания (_). Найдем всех людей у которых “ов” начинается со второго символа:[22]

SELECT PR_NAME2 AS "Имя",

PR_NAME3 AS "Отчество",

PR_NAME AS "Фамилия"

FROM PERSON

WHERE UPPER( PR_NAME ) LIKE ‘ _ов%'

В результате получим

Листинг 13. Список людей, у которых в фамилии после первого символа следует 'ов' (выборка в варианте LIKE '_ов%')

Имя Отчество Фамилия
Вера Валерьевна Новикова
Марина Рафаиловна Новикова
Ольга Викторовна Новосёлова
Поделиться:





Читайте также:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...