it-swarm.com.de

Wie verwende ich die CONCAT-Funktion in SQL Server 2008 R2?

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:

Nachricht 195, Ebene 15, Status 10, Zeile 7
'CONCAT' ist kein anerkannter eingebauter Funktionsname.

Ist die Funktion CONCAT in SQL Server 2008 R2 vorhanden?

Wenn nicht, wie verkette ich Zeichenfolgen in SQL Server 2008 R2?

93

CONCAT ist neu in SQL Server 2012. Der von Ihnen angegebene Link macht dies deutlich. Es ist keine Funktion für Frühere Versionen, einschließlich 2008 R2.

Dass es sich um einen Teil von SQL Server 2012 handelt, können Sie der Dokumentstruktur entnehmen:

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 [~ # ~] Martin Smith weist hilfreich darauf hin, dass SQL Server eine Implementierung von ODBCs CONCAT Funktion .

63
ta.speot.is

Der Vollständigkeit halber verwenden Sie in SQL 2008 das Pluszeichen + Operator, um eine Zeichenkettenverkettung durchzuführen.

Schauen Sie sich die MSDN-Referenz mit Beispielcode an. Ab SQL 2012 möchten Sie möglicherweise das neue CONCAT-Funktion verwenden.

99
Lynn Langit

Ich schlage vor, Sie werfen alle Spalten, bevor Sie sie konkatieren

cast('data1' as varchar) + cast('data2' as varchar) + cast('data3' as varchar)

Dies sollte für Sie arbeiten.

40
vasin1987

Wie bereits erwähnt, wird CONCAT vor SQL Server 2012 nicht unterstützt. Sie können die Verkettung jedoch wie vorgeschlagen einfach mit dem Operator + durchführen. Beachten Sie jedoch, dass dieser Operator einen Fehler auslöst, wenn der erste Operand eine Zahl ist, da er annimmt, dass er addiert und nicht verkettet. Um dieses Problem zu beheben, fügen Sie einfach "" voran. Zum Beispiel

someNumber + 'someString' + .... + lastVariableToConcatenate

wird einen Fehler auslösen, ABER '' + someNumber + 'someString' + ...... wird gut funktionieren.

Wenn zwei Zahlen verkettet werden sollen, stellen Sie außerdem sicher, dass Sie wie folgt ein '' dazwischen einfügen

.... + someNumber + '' + someOtherNumber + .....
23
kuklei

NULL Safe Drop in Ersatznäherungen für die SQL Server 2012 CONCAT-Funktion

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

Mit diesen beiden Lösungen werden mehrere hervorragende Antworten und Vorbehalte zusammengefasst, die von anderen Postern, einschließlich @Martin Smith, @Svish und @ vasin1987, geäußert wurden.

Mit diesen Optionen wird NULL zu '' (Leere Zeichenfolge) hinzugefügt, um eine sichere NULL Verarbeitung zu gewährleisten, wobei das unterschiedliche Verhalten des Operators + In Bezug auf bestimmte Operanden berücksichtigt wird.

Beachten Sie, dass die Lösung ODBC-Scaler-Funktion auf 2 Argumente beschränkt ist, während der Operator + auf viele skalierbar ist Argumente nach Bedarf.

Beachten Sie auch das von @Swifty identifizierte potenzielle Problem in Bezug auf die Standardgröße varchar, das hier durch varchar(MAX) behoben wurde.

4
Troy Sheaffer
(city + ', ' + state + ' ' + Zip) as ctstzip for select
(city + ', ' + state + ' ' + Zip) for insert

Nur umwandeln oder konvertieren, wenn sich ein Feldtyp von anderen unterscheidet.

Beim Einfügen muss der Wert an der richtigen Stelle sein, an der er eingefügt werden soll. Wenn Sie "as" verwenden, wird ein Fehler angezeigt.

d.h.

Insert into testtable (ctstzip) Values ((city + ', ' + state + ' ' + Zip))
3
Antonio Perez