SQL: быстрое погружение - [27]

Шрифт
Интервал

WHERE

Country = "USA"

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

Рис. 89

Практическое задание

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

Примечание

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

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

SELECT

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

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

PostalCode AS [MailingAddress]

FROM

customers

WHERE

Country = "USA"

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

Рис. 90

Практическое задание

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

Примечание

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

Обрезка строки

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

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

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

Чтобы почтовый индекс был единообразным, мы можем использовать функции для удаления дефиса и лишних чисел. Благодаря усовершенствованной системе маршрутизации почтовой службы США дополнительные номера в почтовых индексах США (сверх начальных пяти) не требуются.

Чтобы использовать функции редактирования строк, нам необходимо больше узнать о хранении строк в базе данных. Символы в каждой строке нумеруются, начиная с 1. Это важно при работе со строками, так как позволяет указать фрагмент строки, используя порядковый номер символа.

Мы используем функцию LENGTH() в таком поле, как PostalCode (таблица customers), и видим, что длина каждого кода может быть вычислена.

SELECT

PostalCode,

LENGTH(PostalCode) AS [Postal Code Length]

FROM

customers

WHERE

Country = "USA"

Рис. 91

Анализируя результаты (рис. 91), мы видим, что почтовые индексы различаются размером строк. Минимальная необходимая длина почтового индекса США — пять цифр. С помощью функции SUBSTR() удалим всю информацию после пятой позиции в строке.

Существует два вида функции SUBSTR(): SUBSTR(X,Y) и SUBSTR(X,Y,Z). Чтобы посмотреть краткое описание функции, введите в браузере SUBSTR(.

Примечание

Чтобы DB Browser отображал описание функции SUBSTR(X,Y,Z), необходимо ввести SUBSTR(X,Y, что означает, что вас интересует версия функции с тремя аргументами.

Рис. 92

Если для удаления дополнительных данных из почтовых индексов США мы используем функцию SUBSTR(X,Y,Z), аргумент X будет соответствовать полю PostalCode, а аргумент Y — начальной позиции строки. В данном случае мы хотим, чтобы первые пять чисел остались, поэтому выберем 1. Аргумент Z указывает количество символов, которые функция вернет из начальной позиции, в нашем случае оно равно 5.

Если мы выберем только адреса США, а затем добавим функцию SUBSTR(X,Y,Z) с псевдонимом, мы получим следующее:

SELECT

PostalCode,

SUBSTR(PostalCode,1,5) AS [Five Digit Postal Code]

FROM

customers

WHERE

Country = "USA"

Анализируя результат (рис. 93), мы видим, что все наши почтовые индексы содержат только первые пять цифр.

Примечание

Почтовые индексы, которые не содержат дополнительных номеров, этот запрос не затрагивает.

Мы также можем разделить данные, используя функцию SUBSTR(). Обратите внимание, что версия функции SUBSTR(), принимающей два аргумента, возвращает все символы до конца строки, начиная с позиции Y. Если позиция Y не начинается с 1, мы можем указать функции, чтобы она возвращала только символы, начиная с позиции Y и далее.

Рис. 93

Практическое задание

• Повторите предыдущий запрос, но в блок SELECT добавьте дополнительное поле. Используйте функцию SUBSTR(X,Y), возвращающую только последние четыре цифры почтового индекса (там, где они есть) с псевдонимом ZIP + 4 Code.

Дополнительные строковые функции

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


Рекомендуем почитать
Pro Git

Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.


Java 7

Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.


MFC и OpenGL

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


Симуляция частичной специализации

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


Обработка событий в С++

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


Питон — модули, пакеты, классы, экземпляры

Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.


В работу с головой. Паттерны успеха от IT-специалиста

Не можете сосредоточиться на работе? Постоянно отвлекаетесь на проверку электронной почты, социальные сети и новостные ленты? Пора воспользоваться советами от ведущих IT-специалистов и погрузиться в работу с головой.Освойте один из самых ценных навыков – умение сосредоточиться на сложной задаче, не отвлекаясь на мелочи. Только так можно справиться со сложной информацией и добиться лучших результатов за минимальное время. Погружение в работу – это суперсила в нашей все более конкурентной экономике XXI века.


Чистый код. Создание, анализ и рефакторинг

Даже плохой программный код может работать. Однако если код не является «чистым», это всегда будет мешать развитию проекта и компании-разработчика, отнимая значительные ресурсы на его поддержку и «укрощение». Эта книга посвящена хорошему программированию. Она полна реальных примеров кода. Мы будем рассматривать код с различных направлений: сверху вниз, снизу вверх и даже изнутри. Прочитав книгу, вы узнаете много нового о коде. Более того, вы научитесь отличать хороший код от плохого. Вы узнаете, как писать хороший код и как преобразовать плохой код в хороший. Книга состоит из трех частей.


Изучаем Python

Книга "Изучаем Python" - это ускоренный курс, который позволит вам сэкономить время и сразу начать писать работоспособные программы (игры, визуализации данных, веб-приложения и многое другое). Хотите стать программистом? В первой части книги вам предстоит узнать о базовых принципах программирования, познакомиться со списками, словарями, классами и циклами, вы научитесь создавать программы и тестировать код. Во второй части книги вы начнете использовать знания на практике, работая над тремя крупными проектами: создадите собственную "стрелялку" с нарастающей сложностью уровней, займетесь работой с большими наборами данных и освоите их визуализацию, и, наконец, создадите полноценное веб-приложение на базе Django, гарантирующее конфиденциальность пользовательской информации. Если вы решились разобраться в том что такое программирование, не нужно ждать.


Грокаем алгоритмы. Иллюстрированное пособие для программистов и любопытствующих

Алгоритмы - это всего лишь пошаговые алгоритмы решения задач, и большинство таких задач уже были кем-то решены, протестированы и проверены. Можно, конечно, погрузится в глубокую философию гениального Кнута, изучить многостраничные фолианты с доказательствами и обоснованиями, но хотите ли вы тратить на это свое время? Откройте великолепно иллюстрированную книгу и вы сразу поймете, что алгоритмы - это просто. А грокать алгоритмы - это веселое и увлекательное занятие.