Ich habe nach einer CONCAT
Funktion in SQL Server 2008 R2 gesucht . Ich habe den Link für diese Funktion gefunden . Aber wenn ich diese Funktion benutze, gibt es den folgenden Fehler:
Meldung 195, Ebene 15,
Status 10, Zeile 7 'CONCAT' ist kein anerkannter integrierter Funktionsname.
Ist die CONCAT
Funktion in SQL Server 2008 R2 vorhanden?
Wenn nicht, wie verkette ich Zeichenfolgen in SQL Server 2008 R2?
sql-server
sql-server-2008
tsql
Mitesh Budhabhatti
quelle
quelle
CONCAT
ist neu für 2012Antworten:
CONCAT
ist neu in SQL Server 2012. Der von Ihnen angegebene Link macht dies deutlich. Es handelt sich nicht um eine Funktion in früheren Versionen , einschließlich 2008 R2.Dass es Teil von SQL Server 2012 ist, können Sie der Dokumentstruktur entnehmen:
BEARBEITEN Martin Smith weist hilfreich darauf hin, dass SQL Server eine Implementierung der ODBC-
CONCAT
Funktion bietet .quelle
SELECT {fn concat ('foo', 'bar')};
in früheren Versionen verwenden. Akzeptiert jedoch nur 2 Parameter.+
Operator, wie @ lynn-langit in ihrer Antwort erwähnt, die ich zunächst völlig verpasst habe, weil ich nur die akzeptierte Antwort gelesen habe ...+
verhält sich anders, die Ergebnisse fürSELECT 'A' + 'B' + 'C'
vsSELECT CONCAT('A', 'B', 'C')
vsSELECT 'A' + 'B' + NULL
vsSELECT CONCAT('A', 'B', NULL)
sindABC
,ABC
,NULL
,AB
NULL
, hat das+
Der Vollständigkeit halber würden Sie in SQL 2008 den
+
Operator plus verwenden , um die Verkettung von Zeichenfolgen durchzuführen.Schauen Sie sich die MSDN-Referenz mit Beispielcode an. Ab SQL 2012 möchten Sie möglicherweise die neue CONCAT-Funktion verwenden .
quelle
Ich schlage vor, Sie werfen alle Spalten, bevor Sie sie zusammenfassen
Dies sollte für Sie funktionieren.
quelle
Wie bereits erwähnt, wird CONCAT vor SQL Server 2012 nicht unterstützt. Sie können jedoch einfach mit dem Operator + verketten, wie vorgeschlagen. Beachten Sie jedoch, dass dieser Operator einen Fehler auslöst, wenn der erste Operand eine Zahl ist, da er glaubt, dass er hinzugefügt und nicht verkettet wird. Um dieses Problem zu beheben, fügen Sie einfach '' vor. Beispielsweise
wird einen Fehler auslösen, aber es
'' + someNumber + 'someString' + ......
wird gut funktionieren.Wenn zwei Zahlen verkettet werden müssen, stellen Sie sicher, dass Sie wie folgt ein '' dazwischen einfügen
quelle
SELECT 'varchar(' + 5 + ')'
der Fehler "Konvertierung beim Konvertieren des nvarchar-Werts 'varchar (' in den Datentyp int fehlgeschlagen" ausgelöst, sodass Ihre Antwort vermutlich nicht zutrifft.NULL sicherer Abfall der Ersatznäherungen für die CONCAT-Funktion von SQL Server 2012
SQL Server 2012 :
SELECT CONCAT(data1, data2)
PRE SQL 2012 (zwei Lösungen) :
SELECT {fn CONCAT(ISNULL(data1, ''), ISNULL(data2, ''))}
SELECT ISNULL(CAST(data1 AS varchar(MAX)), '') + ISNULL(CAST(data2 AS varchar(MAX)), '')
Diese beiden Lösungen fassen mehrere hervorragende Antworten und Vorbehalte zusammen, die von anderen Postern wie @Martin Smith, @Svish und @ vasin1987 angesprochen wurden.
Diese Optionen ergänzen
NULL
das''
Casting (leere Zeichenfolge) für eine sichereNULL
Handhabung, während das unterschiedliche Verhalten des+
Operators in Bezug auf bestimmte Operanden berücksichtigt wird .Beachten Sie, dass die ODBC Scaler Function- Lösung auf 2 Argumente beschränkt ist, während der
+
Operator- Ansatz nach Bedarf auf viele Argumente skalierbar ist.Beachten Sie auch das potenzielle Problem, das @Swifty in Bezug auf die Standardgröße identifiziert hat, das
varchar
hier durch behoben wurdevarchar(MAX)
.quelle
Nur umwandeln oder konvertieren, wenn sich ein Feldtyp von anderen unterscheidet.
Beim Einfügen muss sich der Wert an der richtigen Stelle befinden, an der er eingefügt werden soll. Wenn Sie "as" verwenden, wird ein Fehler angezeigt.
dh
quelle
Ja, die Funktion ist nicht in SQL 2008. Sie können die Cast-Operation verwenden, um dies zu tun.
Zum Beispiel haben wir
employee
Tisch und Sie wollenname
mitapplydate
.so können Sie verwenden
Es funktioniert, wenn die Concat-Funktion nicht funktioniert.
quelle