37 Stimmen

SQL Server - Hinzufügen einer Zeichenfolge zu einer Textspalte (Concat-Äquivalent)

Wie fügt man eine Zeichenfolge zu einer Spalte in SQL Server hinzu?

UPDATE [myTable] SET [myText]=' '+[myText]

Das klappt nicht:

Die Datentypen varchar und text sind mit dem Add-Operator nicht kompatibel.

Bei MySQL würde man concat verwenden, aber wie macht man das bei SQL Server?

67voto

Tobias Pirzer Punkte 985

Wie gesagt, am besten wäre es, Datentyp der Spalte auf nvarchar(max) zu setzen, aber wenn das nicht möglich ist, können Sie die folgenden mit Cast oder Convert tun:

-- create a test table 
create table test (
    a text
) 
-- insert test value
insert into test (a) values ('this is a text')
-- the following does not work !!!
update test set a = a + ' and a new text added'
-- but this way it works: 
update test set a = cast ( a as nvarchar(max))  + cast (' and a new text added' as nvarchar(max) )
-- test result
select * from test
-- column a contains:
this is a text and a new text added

17voto

marc_s Punkte 701497

Verwenden Sie nicht mehr die TEXT Datentyp in SQL Server!

Sie ist seit der Version 2005 veraltet. Verwenden Sie VARCHAR(MAX) zu verwenden, wenn Sie mehr als 8000 Zeichen benötigen.

En TEXT Datentyp unterstützt nicht die normalen String-Funktionen, während VARCHAR(MAX) tut - Ihre Anweisung würde gut funktionieren, wenn Sie nur VARCHAR-Typen verwenden würden.

10voto

koesys Punkte 93
UPDATE test SET a = CONCAT(a, "more text")

9voto

ahsteele Punkte 25888

En + (String-Verkettung) funktioniert auf SQL Server nicht für die Datentypen image, ntext oder text.

Bild, nText und Text sind in der Tat alle veraltet .

ntext-, Text- und Bild-Datentypen werden in einer zukünftigen Version von MicrosoftSQL Server entfernt. [ ] Datentypen in der Neuentwicklung, und planen Sie, Anwendungen zu ändern, die die sie derzeit verwenden. Verwenden Sie nvarchar(max), varchar(max), und varbinary(max) stattdessen.

Das heißt, wenn Sie eine ältere Version von SQL Server verwenden, als Sie verwenden möchten UPDATETEXT um Ihre Verkettung durchzuführen. Colin Stasiuk gibt in seinem Blogbeitrag ein gutes Beispiel dafür Stringverkettung in einer Textspalte (SQL 2000 vs. SQL 2005+) .

5voto

Meiscooldude Punkte 3511

Hmm, versuchen Sie es mit CAST(' ' AS TEXT) + [myText]

Allerdings bin ich mir nicht ganz sicher, wie sich das entwickeln wird.

Ich empfehle auch, nicht den Datentyp Text zu verwenden, sondern stattdessen varchar.

Wenn das nicht funktioniert, versuchen Sie ' ' + CAST ([myText] AS VARCHAR(255))

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X