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

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))