Как использовать функцию 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)
.