Как использовать функцию 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?
6 ответов:
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)
EDIT Мартин Смит услужливо указывает, что SQL Server предоставляет реализацию ODBC
CONCAT
функции.
просто для полноты - в SQL 2008 Вы бы использовали plus
+
оператора для выполнения конкатенации строк.посмотри ссылка MSDN с примерами кода. Начиная с SQL 2012, Вы можете использовать новый функции concat.
Я предлагаю вам бросить все столбцы, прежде чем их функция concat
cast('data1' as varchar) + cast('data2' as varchar) + cast('data3' as varchar)
Это должно работать для вас.
CONCAT, как указано, не поддерживается до SQL Server 2012. Однако вы можете объединить просто с помощью оператора+, как это предлагается. Но будьте осторожны, этот оператор выдаст ошибку, если первый операнд является числом, так как он думает, что будет добавлять, а не объединять. Чтобы решить эту проблему, просто добавьте " спереди. Например
someNumber + 'someString' + .... + lastVariableToConcatenate
вызовет ошибку, но
'' + someNumber + 'someString' + ......
будет работать нормально.кроме того, если есть два числа, которые должны быть объединены убедитесь, что вы добавляете а " между ними, вот так
.... + someNumber + '' + someOtherNumber + .....
нулевое безопасное падение в приближениях замены для функции SQL Server 2012 CONCAT
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 решение ограничено 2 аргументами, тогда как
+
оператор подход масштабируется для многих аргументов по мере необходимости.обратите внимание также на потенциальную проблему, идентифицированную @Swifty относительно значения по умолчанию
varchar
размер здесь исправленоvarchar(MAX)
.
(city + ', ' + state + ' ' + zip) as ctstzip for select (city + ', ' + state + ' ' + zip) for insert
только приведение или преобразование, если какой-либо тип поля отличается от других.
при вставке значение должно быть в правильном месте, которое вам нужно вставить. Использование "as" даст вам ошибку.
т. е.
Insert into testtable (ctstzip) Values ((city + ', ' + state + ' ' + zip))