loading..
Русский    English
07:02
листать

Функция CONCAT

Для конкатенации строк в  Cистема управления реляционными базами данных (СУБД), разработанная корпорацией Microsoft. Язык структурированных запросов) — универсальный компьютерный язык, применяемый для создания, модификации и управления данными в реляционных базах данных. SQL Server используется оператор "+".

Т.е. если операнды являются числовыми, то выполняется операция сложения, а если – строковыми, то конкатенация:

Консоль
Выполнить
  1. SELECT 1+2+3+4 a, '1'+'2'+'3'+'4' b;

a    b
10    1234

Если же операнды являются значениями разных типов, то SQL Server выполняет неявное преобразование типов. Выполняя следующий запрос

Консоль
Выполнить
  1. SELECT hd + ' Gb' volume FROM PC WHERE model = 1232;
мы получим сообщение об ошибке:

Error converting data type varchar to real.(Ошибка при преобразовании типа данных varchar к real.)

Существует приоритет типов при их неявном преобразовании, и в соответствии с этим приоритетом сервер пытается преобразовать строку ' Gb' к типу данных столбца hd (real).

Разумеется, явное преобразование типа решает проблему:

Консоль
Выполнить
  1. SELECT CAST(hd AS VARCHAR) + ' Gb' volume FROM PC WHERE model = 1232;

volume
5 Gb
10 Gb
8 Gb
10 Gb

В SQL Server 2012 появилась функция CONCAT, которая выполняет конкатенацию, неявно преобразуя типы аргументов к строковому типу данных. С помощью этой функции предыдущий запрос можно переписать так:

Консоль
Выполнить
  1. SELECT CONCAT(hd, ' Gb') volume FROM PC WHERE model=1232;

Еще одна полезная особенность функции CONCAT состоит в том, что NULL-значения неявно преобразуются в пустую строку- ''. Обычная же конкатенация с NULL-значением дает NULL. Вот пример, который это демонстрирует.

Консоль
Выполнить
  1. SELECT NULL + 'concatenation with NULL' plus,
  2.                CONCAT(NULL, 'concatenation with NULL') concat;

plus    concat
NULL    concatenation with NULL

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

Консоль
Выполнить
  1. SELECT 1+2+3+4 a, CONCAT(1, 2, 3, 4) b;

a    b
10    1234

MySQL

В MySQL также имеется функция CONCAT, вернее, даже две функции. Первая из них – CONCAT – возвращает NULL, если среди аргументов функции встречается NULL, вторая – CONCAT_WS – опускает аргумент, если его значение NULL. Кроме того, эта функция первым аргументом имеет разделитель, используемый при конкатенации.

  1. SELECT CONCAT(NULL, 'concatenation with NULL') concat,
  2.  CONCAT_WS('',NULL, 'concatenation with NULL') concat_ws,
  3. CONCAT_WS(', ',1, 2, NULL, 4) concat_ws_null;

concat    concat_ws    concat_ws_null
(NULL)    concatenation with NULL    1, 2, 4

Рекомендуемые упражнения119

Bookmark and Share
Тэги:
ALL AND AUTO_INCREMENT AVG battles CASE CAST CHAR CHARINDEX CHECK classes COALESCE CONSTRAINT Convert COUNT CROSS APPLY CTE DATEADD DATEDIFF DATENAME DATEPART DATETIME DDL DEFAULT DELETE DISTINCT DML EXCEPT EXISTS EXTRACT FOREIGN KEY FROM FULL JOIN GROUP BY Guadalcanal HAVING IDENTITY IN INNER JOIN insert INTERSECT IS NOT NULL IS NULL ISNULL laptop LEFT LEFT OUTER JOIN LEN maker MAX Больше тэгов
Учебник обновлялся
вчера
©SQL-EX,2008 [Развитие] [Связь] [О проекте] [Ссылки] [Team]
Перепечатка материалов сайта возможна только с разрешения автора.
Rambler's Top100