Умные способы использования строки конкатенации SQL

Язык структурированных запросов (SQL) — удивительно мощный инструмент, и он полон функций. После того, как вы освоили самые важные команды SQL

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

Есть много разных диалектов SQL. Для всех этих примеров я использую вариант PostgreSQL.

Что такое конкатенация?

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

Конкатенация — очень полезный способ объединения двух строк в одну. PHP использует полную остановку для объединения строк, тогда как JavaScript и JQuery

используйте знак плюс.

Конкатенация в SQL работает точно так же. Вы используете специальный оператор, чтобы объединить две вещи в одну. Вот пример в псевдокоде:

first_name = Joe
last_name = Coburn
whole_name = first_name + last_name

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

Хотя переменные в SQL встречаются реже (но все еще используются), конкатенация по-прежнему необходима для возврата комбинированных результатов или для манипулирования данными.

Как объединить

Конкатенация очень проста в SQL. Хотя SQL является распространенным языком, отдельные механизмы баз данных реализуют функции различными способами. Хотя все эти примеры представлены на диалекте PostgreSQL, их легко перевести на другие варианты, просто выполнив поиск в сети «Конкатенация». Различные механизмы могут иметь разный синтаксис для конкатенации, но принцип остается тем же.

Возвращаясь к нашему примеру с именем, вот основные Выбрать запрос:

SELECT first_name, last_name, email FROM users_table

sql select

Здесь нет ничего сложного, так что давайте добавим в конкатенацию:

SELECT first_name || last_name AS full_name, email FROM users_table

sql базовая конкатенация

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

К счастью, это легко исправить: просто вставьте пробел между ними:

SELECT first_name || ' ' || last_name AS full_name, email FROM users_table

площадь объединения

Это базовые примеры, но вы должны увидеть, как работает конкатенация — это действительно так просто! Трубный оператор (|) используется дважды между предложениями. Ваш движок SQL знает, что каждая часть до и после этого символа должна быть объединена и рассматриваться как одна. Будьте осторожны, если вы используете оператор concat, но ничего не объединяете, вы получите ошибку.

ошибка SQL

Как уже упоминалось выше, в этих примерах используется вариант SQL PostgreSQL. Другие варианты могут использовать другой оператор или даже специальную функцию, которую вы должны вызвать. На самом деле не имеет значения, как вы объединяете строки, если вы делаете это так, как ожидает ваш движок базы данных.

Идти глубже

Теперь, когда вы знаете основы, давайте рассмотрим некоторые подробные примеры, а также некоторые распространенные ошибки.

Большинство механизмов баз данных будут успешно объединять строки и целые числа, возможно даже даты. Обычно вы сталкиваетесь с проблемами при объединении сложных типов, таких как массивы:

SELECT first_name || ' ' || last_name || ARRAY[123, 456] AS full_name, email FROM users_table

Этот код не будет работать. Невозможно объединить строки со сложными объектами, такими как массивы. Если вы думаете о том, что вам нужно сделать, вы часто можете написать простой работающий код, а не сложный, безумный код, который не запускается.

Если вы тщательно продумали, что вам нужно сделать, и до сих пор не можете заставить работать SQL, тогда вы рассматривали вопрос об использовании языка программирования? Как разработчик программного обеспечения, работающего над унаследованным кодом, я испытываю боль от попыток отладки SQL, когда кто-то втиснул столько логики в чудо, что он вообще работает — если вы пытаетесь писать логику в SQL, то переключитесь на программирование язык (есть много простых языков для изучения

).

Конкатенация работает очень хорошо для где заявления также:

SELECT first_name, last_name, email FROM users_table WHERE date_of_birth = ('DAY' || '/' || 'MONTH' || '/' || 'YEAR')::date

Здесь происходит несколько вещей. В этом примере ДЕНЬ, МЕСЯЦ, а также ГОД это параметры, которые были переданы из скрипта. Возможно, они были сгенерированы кодом или введены пользователем. Они объединяются вместе, а затем приводятся к типу даты (с использованием синтаксиса преобразования данных к дате PostgreSQL). ::Дата).

Использование конкатенации таким образом позволяет связать воедино отдельные части даты, которые затем можно обработать как «настоящую» дату, а не строку. Не забывайте, что этот базовый пример не защищает от внедрения SQL

так что не используйте его в любом рабочем коде без изменений.

Еще одна ловушка, которую нужно остерегаться, ноль значения (пустая строка является пустой или несуществующей строкой). Учитывая этот запрос:

SELECT first_name || ' ' || NULL AS full_name, email FROM users_table

sql null конкатенация

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

Если вы считаете, что данные, возвращаемые вашим запросом, могут быть нулевыми, вам нужно будет использовать сливаться. Coalesce можно условно считать «если это значение равно null, замените его другой строкой или столбцом»:

SELECT first_name || ' ' || COALESCE(NULL, 'ERROR NULL DATA') AS full_name, email FROM users_table

объединение объединения SQL

Теперь вы знаете, как использовать конкатенацию в SQL, что вы будете с ней делать? Вы сделаете сайт

и оживить это с помощью SQL? Или, возможно, вам нужен генератор статического сайта

для более простого подхода к созданию сайтов.

Что бы вы ни делали, сообщите нам об этом в комментариях ниже!

Ссылка на основную публикацию
Adblock
detector