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.
sql
sql-server
Greg Ogle
quelle
quelle
text
"riesige" 4000nvarchar
, um sicherzustellen, dass fast alles passt?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
quelle
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
quelle
Sie müssen die Zeichenfolgentypen explizit in dieselbe umwandeln, um sie zu verketten. In Ihrem Fall können Sie das Problem lösen, indem Sie einfach ein 'N' vor 'SomeText' (N'SomeText ') hinzufügen. Wenn das nicht funktioniert, versuchen Sie es mit Cast ('SomeText' als nvarchar (8)).
quelle
Eine weitere Option ist der Befehl CONCAT :
SELECT CONCAT(MyTable.TextColumn, 'Text') FROM MyTable
quelle
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.
quelle