Eu estava procurando uma CONCAT
função no SQL Server 2008 R2. Eu encontrei o link para esta função . Mas quando uso essa função, ocorre o seguinte erro:
Msg 195, nível 15, estado 10, linha 7
'CONCAT' não é um nome de função interno reconhecido.
A CONCAT
função existe no SQL Server 2008 R2?
Se não, como concateno strings no SQL Server 2008 R2?
sql-server
sql-server-2008
tsql
Mitesh Budhabhatti
fonte
fonte
CONCAT
seja nova para 2012.Respostas:
CONCAT
é novo no SQL Server 2012. O link que você forneceu deixa isso claro, não é uma função nas versões anteriores , incluindo 2008 R2.Que faz parte do SQL Server 2012 pode ser visto na árvore do documento:
EDIT Martin Smith destaca que o SQL Server fornece uma implementação da
CONCAT
função ODBC .fonte
SELECT {fn concat ('foo', 'bar')};
em versões anteriores. Só aceita 2 parâmetros.+
operadora, como @ lynn-langit menciona em sua resposta, que eu a princípio perdi totalmente porque só li a resposta aceita ...+
se comporta de forma diferente, os resultados paraSELECT 'A' + 'B' + 'C'
vsSELECT CONCAT('A', 'B', 'C')
vsSELECT 'A' + 'B' + NULL
vsSELECT CONCAT('A', 'B', NULL)
sãoABC
,ABC
,NULL
,AB
NULL
, então+
funcionou muito bem :)Apenas para completar - no SQL 2008, você usaria o
+
operador mais para realizar a concatenação de strings.Dê uma olhada na referência do MSDN com código de exemplo. A partir do SQL 2012, você pode querer usar a nova função CONCAT .
fonte
Eu sugiro que você lance todas as colunas antes de concatá-las
Isso deve funcionar para você.
fonte
CONCAT, conforme declarado, não tem suporte antes do SQL Server 2012. No entanto, você pode concatenar simplesmente usando o operador + conforme sugerido. Mas cuidado, este operador lançará um erro se o primeiro operando for um número, pois ele pensa que estará adicionando e não concatenando. Para resolver esse problema, basta adicionar '' na frente. Por exemplo
irá gerar um erro, MAS
'' + someNumber + 'someString' + ......
funcionará bem.Além disso, se houver dois números a serem concatenados, certifique-se de adicionar um '' entre eles, como
fonte
SELECT 'varchar(' + 5 + ')'
gera o erro "A conversão falhou ao converter o valor nvarchar 'varchar (' para o tipo de dados int", então acho que sua resposta não se sustenta.NULL safe drop nas aproximações de substituição para a função CONCAT do SQL Server 2012
SQL Server 2012 :
SELECT CONCAT(data1, data2)
PRE SQL 2012 (duas soluções) :
SELECT {fn CONCAT(ISNULL(data1, ''), ISNULL(data2, ''))}
SELECT ISNULL(CAST(data1 AS varchar(MAX)), '') + ISNULL(CAST(data2 AS varchar(MAX)), '')
Essas duas soluções reúnem várias respostas excelentes e advertências levantadas por outros participantes, incluindo @Martin Smith, @Svish e @ vasin1987.
Essas opções somam-se
NULL
à''
conversão (string vazia) paraNULL
manuseio seguro enquanto leva em consideração o comportamento variável do+
operador em relação a operandos específicos.Observe que a solução ODBC Scaler Function é limitada a 2 argumentos, enquanto a abordagem do
+
operador é escalonável para muitos argumentos conforme necessário.Observe também o possível problema identificado por @Swifty em relação ao
varchar
tamanho padrão aqui corrigido porvarchar(MAX)
.fonte
Apenas lançar ou converter se algum tipo de campo for diferente dos outros.
Ao inserir o valor precisa estar no local correto em que você precisa que ele seja inserido. Usar "como" gerará um erro.
ie
fonte
Sim, a função não está no sql 2008. Você pode usar a operação de conversão para fazer isso.
Por exemplo, temos
employee
mesa e você quername
comapplydate
.então você pode usar
Ele funcionará onde a função concat não estiver funcionando.
fonte