Das folgende SQL:
SELECT notes + 'SomeText'
FROM NotesTable a
Geben Sie den Fehler ein:
Die Datentypen nvarchar und text sind im Operator add nicht kompatibel.
Antworten:
Die einzige Möglichkeit wäre, Ihr Textfeld in ein nvarchar-Feld zu konvertieren.
Select Cast(notes as nvarchar(4000)) + 'SomeText'
From NotesTable a
Andernfalls schlage ich vor, die Verkettung in Ihrer Anwendung durchzuführen.
Möglicherweise möchten Sie auch NULL-Werte berücksichtigen. In Ihrem Beispiel, wenn die Spalte Notizen einen Nullwert hat, dann wird der resultierende Wert NULL sein. Wenn Sie möchten, dass sich die Nullwerte wie leere Zeichenfolgen verhalten (sodass die Antwort "SomeText" lautet), verwenden Sie die IsNull-Funktion:
Select IsNull(Cast(notes as nvarchar(4000)),'') + 'SomeText' From NotesTable a
Wenn Sie SQL Server 2005 oder höher verwenden, sollten Sie abhängig von der Größe der Daten im Feld Notizen möglicherweise eine Umwandlung in nvarchar (max) in Betracht ziehen, anstatt eine bestimmte Länge zu verwenden, die zum Abschneiden von Zeichenfolgen führen kann.
Select Cast(notes as nvarchar(max)) + 'SomeText' From NotesTable a
Eine weitere Option ist der Befehl CONCAT :
SELECT CONCAT(MyTable.TextColumn, 'Text') FROM MyTable
Wenn Sie SQL Server 2005 (oder höher) verwenden, sollten Sie in Ihrer Tabellendefinition auf NVARCHAR (MAX) umsteigen. Die Datentypen TEXT, NTEXT und IMAGE von SQL Server 2000 werden in zukünftigen Versionen von SQL Server nicht mehr unterstützt. SQL Server 2005 bietet Abwärtskompatibilität mit Datentypen. Sie sollten jedoch wahrscheinlich stattdessen VARCHAR (MAX), NVARCHAR (MAX) und VARBINARY (MAX) verwenden.
text
"riesige" 4000nvarchar
, um sicherzustellen, dass fast alles passt?