Как использовать функцию CONCAT в SQL Server 2008 R2?

Я искал функцию CONCAT в SQL Server 2008 R2. я нашел ссылку для этой функции. Но когда я использую эту функцию, она дает следующую ошибку:

Msg 195, уровень 15, состояние 10, строка 7
"CONCAT" не является признанным встроенным именем функции.

Существует ли функция CONCAT в SQL Server 2008 R2?

Если нет, как мне связать строки в SQL Server 2008 R2?

Ответ 1

CONCAT является новым для SQL Server 2012. Указанная вами ссылка делает это ясным, это не функция предыдущих версий, включая 2008 R2.

То, что это часть SQL Server 2012, можно увидеть в дереве документов:

SQL Server 2012  
Product Documentation  
Books Online for SQL Server 2012  
Database Engine  
  Transact-SQL Reference (Database Engine)  
    Built-in Functions (Transact-SQL)  
      String Functions (Transact-SQL)  

РЕДАКТИРОВАТЬ Мартин Смит с благодарностью указывает, что SQL Server обеспечивает реализацию функции ODBC CONCAT.

Ответ 2

Только для полноты - в SQL 2008 вы должны использовать оператор plus + для выполнения конкатенации строк.

Посмотрите ссылку MSDN с образцом кода. Начиная с SQL 2012, вы можете использовать новую функцию CONCAT.

Ответ 3

Я предлагаю вам бросить все столбцы, прежде чем конкатрировать их

cast('data1' as varchar) + cast('data2' as varchar) + cast('data3' as varchar)

Это должно сработать для вас.

Ответ 4

CONCAT, как указано, не поддерживается до SQL Server 2012. Однако вы можете конкатенировать просто используя оператор +, как было предложено. Но будьте осторожны, этот оператор будет вызывать ошибку, если первый операнд - это число, поскольку он считает, что будет добавлять и не конкатенировать. Чтобы решить эту проблему, просто добавьте "впереди". Например

someNumber + 'someString' + .... + lastVariableToConcatenate

приведет к ошибке, но '' + someNumber + 'someString' + ...... будет работать нормально.

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

.... + someNumber + '' + someOtherNumber + .....

Ответ 5

(city + ', ' + state + ' ' + zip) as ctstzip for select
(city + ', ' + state + ' ' + zip) for insert

Только листинг или преобразование, если какой-либо тип поля отличается от других.

Вставить значение должно быть в нужном месте, вам нужно его вставить. Использование "как" даст вам сообщение об ошибке.

то есть.

Insert into testtable (ctstzip) Values ((city + ', ' + state + ' ' + zip))

Ответ 6

NULL безопасное падение в замещающих аппроксимациях для функции SQLCAD 2012 2012

SQL Server 2012:

SELECT CONCAT(data1, data2)

PRE SQL 2012 (два решения):

SELECT {fn CONCAT(ISNULL(data1, ''), ISNULL(data2, ''))}

SELECT ISNULL(CAST(data1 AS varchar(MAX)), '') + ISNULL(CAST(data2 AS varchar(MAX)), '')

Эти два решения сочетают несколько отличных ответов и предостережений, поднятых другими плакатами, включая @Martin Smith, @Svish и @vasin1987.

Эти параметры добавляют NULL в '' (пустую строку) кастинг для безопасной обработки NULL при учете различного поведения оператора +, относящегося к определенным операндам.

Обратите внимание, что функция ODBC Scaler Function ограничена двумя аргументами, тогда как подход + является масштабируемым для многих аргументов по мере необходимости.

Обратите внимание также на потенциальную проблему, идентифицированную @Swifty относительно размера по умолчанию varchar, здесь исправленного varchar(MAX).