Я искал CONCAT
функцию в SQL Server 2008 R2. Я нашел ссылку на эту функцию . Но когда я использую эту функцию, выдает следующую ошибку:
Msg 195, уровень 15, состояние 10, строка 7
«CONCAT» не является распознанным именем встроенной функции.
Существует ли эта CONCAT
функция в SQL Server 2008 R2?
Если нет, как мне объединить строки в SQL Server 2008 R2?
sql-server
sql-server-2008
tsql
Митеш Будхабхатти
источник
источник
CONCAT
является новым для 2012 годаОтветы:
CONCAT
является новым для SQL Server 2012. Ссылка, которую вы дали, ясно показывает, что это не функция в предыдущих версиях , включая 2008 R2.То, что это часть SQL Server 2012, можно увидеть в дереве документов:
EDIT Мартин Смит услужливо указывает на то , что SQL Server обеспечивает реализацию ODBC в
CONCAT
функции .источник
SELECT {fn concat ('foo', 'bar')};
в предыдущих версиях. Однако принимает только 2 параметра.+
оператор, как упоминает @ lynn-langit в своем ответе, который я сначала полностью пропустил, потому что я прочитал только принятый ответ ...+
ведет себя по- разному, результатыSELECT 'A' + 'B' + 'C'
противSELECT CONCAT('A', 'B', 'C')
противSELECT 'A' + 'B' + NULL
противSELECT CONCAT('A', 'B', NULL)
являютсяABC
,ABC
,NULL
,AB
NULL
, поэтому+
отлично поработали :)Просто для полноты - в SQL 2008 вы использовали бы
+
оператор плюс для выполнения конкатенации строк.Взгляните на ссылку MSDN с образцом кода. Начиная с SQL 2012, вы можете использовать новую функцию CONCAT .
источник
Я предлагаю вам преобразовать все столбцы, прежде чем объединять их
Это должно сработать для вас.
источник
CONCAT, как указано, не поддерживается до SQL Server 2012. Однако вы можете объединить, просто используя оператор +, как предлагается. Но будьте осторожны, этот оператор выдаст ошибку, если первый операнд является числом, поскольку он думает, что будет складывать, а не объединять. Чтобы решить эту проблему, просто добавьте впереди. Например
вызовет ошибку, НО
'' + someNumber + 'someString' + ......
будет работать нормально.Кроме того, если нужно объединить два числа, убедитесь, что вы добавили между ними знак "", например
источник
SELECT 'varchar(' + 5 + ')'
выдает ошибку «Преобразование завершилось неудачно при преобразовании значения nvarchar 'varchar (' в тип данных int», поэтому я полагаю, что ваш ответ неверен.NULL безопасное падение в приближении замены для функции CONCAT в SQL Server 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)
.источник
Приведение или преобразование только в том случае, если какой-либо тип поля отличается от других.
При вставке значение должно быть в нужном месте. Использование «as» приведет к ошибке.
т.е.
источник
Да, этой функции нет в sql 2008. Для этого можно использовать операцию приведения.
Например, у нас есть
employee
таблица, а вы хотитеname
сapplydate
.так что вы можете использовать
Он будет работать там, где функция concat не работает.
источник