Большинство функций в DB Browser содержат всплывающие подсказки, которые очень полезны для определения аргументов, принимаемых функцией, и описания работы функции. Я рекомендую изучить и другие функции.

<p id="практические_задания_10">Практические задания</p>

• Функция UPPER() принимает только один аргумент (X). Сколько аргументов принимает функция REPLACE()?

• Прочитайте всплывающую подсказку (на экране в DB Browser) и объясните, как работает функция TRIM().

Внимание

Если всплывающая подсказка не появилась, убедитесь, что вы правильно набираете функцию. Подсказка не появится, если вы просто скопируете и вставите функцию и открытую скобку. Это еще одна причина, по которой всегда необходимо вводить запросы вручную. Никаких ускоренных методов!

<p id="_10_xhtml_2523toc_marker_10_2"><strong>Управление текстовыми данными с помощью строковых функций</strong></p>

Строка — это еще одно название для текстовых данных. Строковые функции позволяют форматировать и изменять текст. Чтобы понять, как они работают, вспомним типы данных в SQLite. В главе 3, анализируя структуру базы данных, мы видели, что текстовые данные были сохранены в формате NVARCHAR(X). NVARCHAR — это строка переменной длины, где X представляет максимальную длину строки.

НАПОМИНАНИЕ

Для символьных данных фиксированной длины (например, почтовых индексов, содержащих буквы) можно использовать другой тип данных — с фиксированной длиной. Однако в базе данных sTunes символьный тип данных NVARCHAR используется для всех текстовых данных.

Возможность манипулировать текстовыми строками важна, так как поля в базе данных не всегда организованы удобно для нас. Допустим, нас попросили создать список рассылки по клиентам из США. Для этого необходимо получить имена и адреса клиентов. Используем оператор SELECT.

SELECT

FirstName,

LastName,

Address

FROM

customers

WHERE

Country = 'USA'

При выполнении запроса получим следующий результат:

Рис. 87

Однако возникают некоторые проблемы. Данные адреса разбиты на части. Просто запросить поле адреса недостаточно. Нам также необходимо выбрать поля City, State и PostalCode. Другая проблема: все эти данные содержатся в отдельных полях. Если необходимо создать простой список рассылки, где каждая строка представляет собой полное имя и адрес клиента, то для этой цели полученный шаблон не годится.

<p id="практическое_задание_2">Практическое задание</p>

• Попробуйте скопировать результат последнего запроса из DB Browser в текстовый редактор. Что вы видите?

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

<p id="_10_xhtml_2523toc_marker_10_3"><strong>Конкатенация строк</strong></p>

Конкатенация — объединение двух или более строк. Для слияния двух полей вместе используется символ ||. Например, следующий код выполняет объединение полей FirstName и LastName.

SELECT

FirstName || LastName

FROM

customers

WHERE

CustomerId = 1

Получится следующий результат:

Рис. 88

Оператор конкатенации || просто соединил оба поля вместе без пробелов. Для удобства чтения мы можем последовательно использовать две конкатенации и заключить пробел в одинарные кавычки. Тогда запрос будет выглядеть следующим образом:

SELECT

FirstName,

LastName,

FirstName || ' ' || LastName

FROM

customers

WHERE

Country = "USA"

При выполнении запроса получим следующий результат:

Рис. 89

<p id="практическое_задание_3">Практическое задание</p>

• Сделайте результаты вывода более читабельными, создав псевдоним FullName для нашего объединенного поля.

Примечание

Функция конкатенации || не похожа на остальные функции, которые мы будем рассматривать в этой главе. В других реализациях SQL существует функция CONCAT() или используется символ +. Синтаксис может отличаться в зависимости от того, какую РСУБД вы используете, но эффект будет одинаковым.

Рассмотрим следующий пример, где для создания в одной строке имени и адреса клиента используется множественная конкатенация.

SELECT

FirstName || ' ' || LastName || ' ' || Address

|| ', ' || City || ', ' || State || ' ' ||

PostalCode AS [MailingAddress]

FROM

customers

WHERE

Country = "USA"

При выполнении запроса получим следующий результат:

Рис. 90

<p id="практическое_задание_4">Практическое задание</p>

• После выполнения запроса скопируйте полученный в DB Browser результат в текстовый редактор. Он будет намного читабельнее, чем до выполнения конкатенации.

Примечание

Пробелы между символами || не обязательны. В предыдущем примере, чтобы получить желаемый формат, мы использовали запятую, а затем пробел. Вы можете добавить любой текст, поместив его в кавычки.

<p id="_10_xhtml_2523toc_marker_10_4"><strong>Обрезка строки</strong></p>

С помощью функций мы также можем вырезать из текста определенное количество символов. Из приведенного выше примера видно, что почтовые индексы США в таблице customers не единообразны. Некоторые из них содержат дефис и дополнительный четырехзначный номер, который почтовая служба США называет кодом ZIP +4. В одном из почтовых индексов отсутствует четвертая цифра почтового кода ZIP +4.

На мой взгляд,

Перейти на страницу:

Все книги серии Библиотека программиста

Похожие книги