Использование в SQL-запросе сложных выражений и функций для вывода определенных записей
В области слова <$I[] WHERE в SQL-инструкции SELECT > WHERE можно располагать довольно сложное условное выражение с использованием знаков логических операций и функций. Например: SELECT НаимТовара as [Наименование товара], Цена1 as [Цена закупочная] FROM Товары WHERE Цена1 > 50 AND Цена1 200 или SELECT НаимТовара as [Наименование товара], Цена1 as [Цена закупочная] FROM Товары WHERE Цена1 > 50 AND Len(НаимТовара) < 20 В первом случае запрашиваются товары, оптовая цена которых находится в диапазоне оптовых цен (55–200), а во втором — цены которых больше 50 денежных единиц и длина наименования не превышает 20 символов. Замечание При работе с SQL-инструкциями в Access и из VB- или VBA-кода можно использовать, кроме функций языка SQL Microsoft Jet, встроенные функции языка Visual Basic. Кроме операций < и >, в инструкции SELECT можно использовать операции = (равно), <= (меньше или равно) и >= (больше или равно), а также <$I[] AND в SQL-инструкции SELECT > AND, <$I[] OR в SQL-инструкции SELECT > OR и <$I[] NOT в SQL-инструкции SELECT > NOT. Но еще б о льшие возможности по отбору необходимых записей предоставляют такие операторы, как <$I[] IS NULL в SQL-инструкции SELECT > IS NULL, <$I[] BETWEEN в SQL-инструкции SELECT > BETWEEN, <$I[] IN в SQL-инструкции SELECT > IN <$I[] LIKE в SQL-инструкции SELECT > и LIKE. Оператор IS NULL позволяет найти в таблице записи, в полях которых не указаны данные, например: SELECT НаимТовара AS [Наименование товара], Цена1 AS [Цена закупочная] FROM Товары WHERE Цена2 IS NULL OR Цена1 < 50 Оператор BETWEEN позволяет указать диапазон, в котором находятся данные некоторого поля, например: SELECT НаимТовара as [Наименование товара], Цена1 as [Цена закупочная] FROM Товары WHERE Цена1 BETWEEN 42 AND 120 Оператор IN позволяет указать список, в котором находятся данные некоторого поля, например: SELECT НаимТовара as [Наименование товара], Цена1 as [Цена закупочная] FROM Товары WHERE Цена1 IN (42, 105,750) В SQL-инструкции можно также использовать оператор LIKE, например инструкция: SELECT НаимТовара as [Наименование товара],Цена1 as [Цена закупочная] FROM Товары WHERE НаимТовара LIKE "(VCD)*" позволяет получить только те записи (рис. 15.12), у которых в наименовании первые пять символов совпадают со строкой " (VCD)". Рис. 15.12 Вывод только тех записей, у которых в наименовании первые пять символов совпадают со строкой "(VCD)" Оператор LIKE можно использовать для контекстного поиска, например, если пользователь введет текстовую строку, содержащую часть наименования товара, то эту строку легко использовать в виде шаблона. Следующая инструкция выполняет поиск записи, в которой наименование содержит в качестве подстроки строку " (мишень)" (результат — на рис. 15.13): SELECT НаимТовара as [Наименование товара], Цена1 as [Цена закупочная] FROM Товары WHERE НаимТовара LIKE "*мишень*" Рис. 15.13 Результат использования инструкции, которая выполняет поиск записи, где наименование содержит в качестве подстроки строку “мишень” Оператор NOT, который инвертирует логическое выражение, может использоваться с операторами IS NULL, BETWEEN, IN, LIKE. При этом, практически, речь идет об операторах <$I[] IS NOT NULL в SQL-инструкции SELECT > IS NOT NULL, <$I[] NOT BETWEEN в SQL-инструкции SELECT > NOT BETWEEN, <$I[] NOT IN в SQL-инструкции SELECT > NOT IN и <$I[] NOT LIKE в SQL-инструкции SELECT > NOT LIKE, например, как в следующих четырех инструкциях: SELECT НаимТовара AS [Наименование товара], Цена1 AS [Цена закупочная] FROM Товары WHERE Цена2 IS NOT NULL OR Цена1 < 50
SELECT НаимТовара as [Наименование товара], Цена1 as [Цена закупочная] FROM Товары WHERE Цена1 NOT BETWEEN 42 AND 120
SELECT НаименованиеТовара as [Наименование товара], Цена1 as [Цена закупочная] FROM Товары WHERE Цена1 NOT IN (42, 105,750)
SELECT НаимТовара as [Наименование товара], Цена1 as [Цена закупочная] FROM Товары WHERE НаимТовара NOT LIKE "(VCD)*" Результирующие данные запроса можно форматировать с использованием, например, функции <$I[] Format в SQL-инструкции SELECT > Format. В следующем запросе данные форматируются при помощи строки “### ##0.00$” (результат — на рис. 15.14): SELECT НаимТовара as [Наименование товара],Format(Цена1*1.2,"### ##0.00р") as [Цена оптовая] FROM Товары WHERE Цена1 < 100 Рис. 15.14 Результирующие данные запроса можно форматировать с использованием функции Format Обратите внимание еще и на то, что функция Format в качестве первого аргумента получает произведение Цена1*1.2. Таким образом мы получаем другую цену из некоторой базовой. Для форматирования выводимых в запросе данных можно использовать функции преобразования строк. Например, в следующем запросе наименования товаров выводятся символами верхнего регистра, поскольку здесь используется функция StrConv (результат — на рис. 15.15): SELECT StrConv(НаимТовара,1) AS [Наименование товара], Цена1 AS [Цена закупочная] FROM Товары WHERE НаимТовара LIKE "(3DC)*" Рис. 15.15 Наименования товаров выводятся символами верхнего регистра, поскольку здесь используется функция StrConv
|