Какой функции нет в sql concat
Перейти к содержимому

Какой функции нет в sql concat

  • автор:

CONCAT (Transact-SQL)

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

Чтобы добавить разделяющее значение во время объединения, используйте CONCAT_WS.

Синтаксис

CONCAT ( argument1 , argument2 [ , argumentN ] . ) 

Сведения о синтаксисе Transact-SQL для SQL Server 2014 (12.x) и более ранних версиях см . в документации по предыдущим версиям.

Аргументы

argument1, argument2 [ , argumentN ]

Выражение любого строкового значения. Функции CONCAT требуется по крайней мере два аргумента и не более 254 аргументов.

Типы возвращаемых данных

Строковое значение, длина и тип которого зависят от входных данных.

Замечания

CONCAT принимает переменное количество строковых аргументов и объединяет их в одну строку. Для этого требуется не менее двух входных значений; CONCAT в противном случае вызывает ошибку. Функция CONCAT неявно преобразует все аргументы в строковые типы перед объединением. CONCAT неявно преобразует значения NULL в пустые строки. При CONCAT получении аргументов со всеми NULL значениями возвращается пустая строка типа varchar(1). Неявное преобразование в строки выполняется по существующим правилам преобразования типов данных. Дополнительные сведения о преобразовании типов данных см. в статье Функции CAST и CONVERT (Transact-SQL).

Тип возвращаемого значения зависит от типа аргументов. Описанные выше основные понятия проиллюстрированы в этой таблице.

Тип Ввода Выходной тип и длина
1. Любой аргумент типа системы SQL-CLR, UDT SQL-CLR или nvarchar(max) nvarchar(max)
2. В противном случае любой аргумент типа varbinary(max) или varchar(max) varchar(max), если только один из параметров не представляет собой значение nvarchar любой длины. В этом случае CONCAT возвращает результат типа nvarchar(max).
3. В противном случае любой аргумент типа nvarchar до 4000 символов (nvarchar()) nvarchar()
4. Во всех остальных случаях любой аргумент типа varchar до 8000 символов (varchar(= 8000)), если один из параметров не является nvarchar любой длины. В этом случае CONCAT возвращает результат типа nvarchar(max).

Если ни один из входных аргументов не имеет поддерживаемого типа большого объекта (LOB), возвращаемый тип усечен до 8000 символов длиной, независимо от типа возвращаемого значения. Это усечение позволяет сохранить пространство и обеспечить эффективность формирования плана.

CONCAT можно удаленно выполнять на связанном сервере под управлением SQL Server 2012 (11.x) и более поздних версий. Для старых связанных серверов операция будет выполняться локально, CONCAT после того как связанный сервер возвращает несоединяемые значения.

Примеры

А. Использование CONCAT

SELECT CONCAT ('Happy ', 'Birthday ', 11, '/', '25') AS Result; 
Result -------------------- Happy Birthday 11/25 

B. Использование CONCAT со значениями NULL

CREATE TABLE #temp ( emp_name NVARCHAR(200) NOT NULL, emp_middlename NVARCHAR(200) NULL, emp_lastname NVARCHAR(200) NOT NULL ); INSERT INTO #temp VALUES ('Name', NULL, 'Lastname'); SELECT CONCAT (emp_name, emp_middlename, emp_lastname) AS Result FROM #temp; 
Result ------------ NameLastname 

Связанный контент

  • CONCAT_WS (Transact-SQL)
  • FORMATMESSAGE (Transact-SQL)
  • QUOTENAME (Transact-SQL)
  • REPLACE (Transact-SQL)
  • REVERSE (Transact-SQL)
  • STRING_AGG (Transact-SQL)
  • STRING_ESCAPE (Transact-SQL)
  • STUFF (Transact-SQL)
  • TRANSLATE (Transact-SQL)
  • Строковые функции (Transact-SQL)

Обратная связь

Были ли сведения на этой странице полезными?

Обратная связь

Отправить и просмотреть отзыв по

Функции со строковыми значениями — concat

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

Синтаксис

 fn:concat ($string as xs:string? ,$string as xs:string? [, . ]) as xs:string 

Аргументы

$string
Необязательная строка для сцепления.

Замечания

Функции требуется как минимум два аргумента. Если в качестве аргумента передана пустая последовательность, она трактуется как строка нулевой длины.

Дополнительные символы (суррогатные пары)

Поведение суррогатных пар в функциях XQuery зависит от уровня совместимости базы данных и, в некоторых случаях, от URI-кода пространства имен по умолчанию для функций. Дополнительные сведения см. в разделе «Функции XQuery с суррогатной поддержкой» статьи «Критические изменения функций ядра СУБД в SQL Server 2016». Дополнительные сведения см. в разделе ALTER DATABASE Compatibility Level (Transact-SQL) и Параметры сортировки и Поддержка Юникода.

Примеры

В этом разделе приведены примеры XQuery для экземпляров XML, хранящихся в различных столбцах типов XML в примере базы данных AdventureWorks.

О. Применение функции concat() языка XQuery для объединения строк

Для указанного изделия запрос возвращает строку, полученную сцеплением гарантийного строка и гарантийных обязательств. В документе < Warranty >описания каталога элемент состоит из дочерних> WarrantyPeriod

WITH XMLNAMESPACES ( 'https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription' AS pd, 'https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain' AS wm) SELECT CatalogDescription.query(' " > < concat( string((/pd:ProductDescription/pd:Features/wm:Warranty/wm:WarrantyPeriod)[1]), "-", string((/pd:ProductDescription/pd:Features/wm:Warranty/wm:Description)[1])) > ') as Result FROM Production.ProductModel PD WHERE PD.ProductModelID=28 

Обратите внимание на следующие данные из предыдущего запроса:

  • В предложении SELECT CatalogDescription — это столбец типа XML . Поэтому используется метод query() (тип данных XML), Instructions.query(). Инструкция XQuery задана как аргумент метода query.
  • Запрос к документу выполняется при использовании пространства имен, Поэтому ключевое слово пространства имен используется для определения префикса пространства имен. Дополнительные сведения см. в разделе XQuery Prolog.
1 year-parts and labor 

Приведенный запрос получает сведения об указанном изделии. Следующий запрос получает те же сведения по всем изделиям, для которых имеются описания каталога XML. Метод exist() типа данных XML в предложении WHERE возвращает значение True, если XML-документ в строках имеет>< ProductDescription элемент.

WITH XMLNAMESPACES ( 'https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription' AS pd, 'https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain' AS wm) SELECT CatalogDescription.query(' " > < concat( string((/pd:ProductDescription/pd:Features/wm:Warranty/wm:WarrantyPeriod)[1]), "-", string((/pd:ProductDescription/pd:Features/wm:Warranty/wm:Description)[1])) > ') as Result FROM Production.ProductModel PD WHERE CatalogDescription.exist('//pd:ProductDescription ') = 1 

Обратите внимание, что логическое значение, возвращаемое методом exist() типа XML, сравнивается с 1.

Ограничения реализации

Существуют следующие ограничения:

  • Функция concat() в SQL Server принимает только значения типа xs:string. Все остальные значения должны быть явно приведены в xs:string или xdt:untypedAtomic.

SQL Server функция CONCAT

В SQL Server (Transact-SQL) функция CONCAT позволяет соединять строки.

Синтаксис

Синтаксис функции CONCAT в SQL Server (Transact-SQL):

CONCAT( string1, string2, . string_n )

Параметры или аргументы

string1 , string2 , . string_n — строки для объединения.

Применение

Функция CONCAT может использоваться в следующих версиях SQL Server (Transact-SQL):
SQL Server vNext, SQL Server 2016, SQL Server 2015, SQL Server 2014, SQL Server 2012

Пример

Рассмотрим некоторые примеры SQL Server функции CONCAT, чтобы понять, как использовать функцию CONCAT в SQL Server (Transact-SQL). Например:

Transact-SQL
SELECT CONCAT ( ‘SQL’ , ‘Server’ );
—Результат: ‘SQLServer’
SELECT CONCAT ( ‘S’ , ‘Q’ , ‘L’ , ‘Server’ );
—Результат: ‘SQLServer’
SELECT CONCAT ( ‘SQL ‘ , ‘Server’ );
—Результат: ‘SQL Server’

Объединение с символом пробел

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

Рассмотрим простой пример.
Например:

Transact-SQL
SELECT CONCAT ( ‘Жаркое’ , ‘ ‘ , ‘солнце’ );
—Результат: ‘Жаркое солнце’

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

Объединение с символом ковычки

Так как параметры внутри функции CONCAT заключаются в одинарные кавычки, то нет прямой информации о том, как добавить символ одиночной кавычки в результат функции CONCAT.
Давайте рассмотрим довольно простой пример, который показывает, как добавить одинарную кавычку в результирующую строку, используя функцию CONCAT.
Это можно написать следующим образом:

Функция CONCAT

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

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

Консоль

Выполнить

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

Консоль

Выполнить

мы получим сообщение об ошибке:

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

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

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

Консоль

Выполнить

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

Консоль

Выполнить

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

Консоль

Выполнить

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

Консоль

Выполнить

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *