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

Умные способы использования строки конкатенации 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, их легко перевести на другие варианты, просто выполнив поиск в Интернете по запросу «Concatenate». У разных движков может быть разный синтаксис конкатенации, но принцип остается тем же.

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





SELECT first_name, last_name, email FROM users_table

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

SELECT first_name || last_name AS full_name, email FROM users_table

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

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

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

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

Как упоминалось выше, в этих примерах используется вариант 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

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

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

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

Теперь вы знаете, как использовать конкатенацию в SQL, что вы с этим будете делать? Вы будете сделать сайт и оживить его с помощью SQL? Или, возможно, вам нужен генератор статических сайтов для более простого подхода к созданию сайтов.

Что бы вы ни делали, дайте нам знать в комментариях ниже!

сколько стоит YouTube Premium в месяц
Делиться Делиться Твитнуть Эл. адрес 6 звуковых альтернатив: лучшие бесплатные или дешевые аудиокниги

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

Читать далее
Похожие темы
  • Программирование
  • Программирование
  • SQL
Об авторе Джо Коберн(136 опубликованных статей)

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

Ещё от Joe Coburn

Подписывайтесь на нашу новостную рассылку

Подпишитесь на нашу рассылку, чтобы получать технические советы, обзоры, бесплатные электронные книги и эксклюзивные предложения!

Нажмите здесь, чтобы подписаться