Następujący SQL:
SELECT notes + 'SomeText'
FROM NotesTable a
Podaj błąd:
Typy danych nvarchar i text są niezgodne w operatorze dodawania.
sql
sql-server
Greg Ogle
źródło
źródło
text
jako „ogromne” 4000,nvarchar
aby upewnić się, że prawie wszystko będzie pasować?Możesz również rozważyć wartości NULL. W twoim przykładzie, jeśli notatki do kolumny mają wartość null, wynikowa wartość będzie równa NULL. Jeśli chcesz, aby wartości null zachowywały się jak puste ciągi (tak, że odpowiedź brzmi „SomeText”), użyj funkcji IsNull:
Select IsNull(Cast(notes as nvarchar(4000)),'') + 'SomeText' From NotesTable a
źródło
Jeśli używasz SQL Server 2005 lub nowszego, w zależności od rozmiaru danych w polu Uwagi, możesz rozważyć rzutowanie na nvarchar (max) zamiast rzutowania na określoną długość, co może spowodować obcięcie ciągu.
Select Cast(notes as nvarchar(max)) + 'SomeText' From NotesTable a
źródło
Musisz jawnie rzutować typy ciągów na te same, aby je połączyć. W twoim przypadku możesz rozwiązać problem, po prostu dodając „N” przed „SomeText” (N'SomeText '). Jeśli to nie zadziała, spróbuj Cast ('SomeText' jako nvarchar (8)).
źródło
Inną opcją jest polecenie CONCAT :
SELECT CONCAT(MyTable.TextColumn, 'Text') FROM MyTable
źródło
Jeśli używasz SQL Server 2005 (lub nowszego), możesz rozważyć przejście na NVARCHAR (MAX) w definicji tabeli; Typy danych TEXT, NTEXT i IMAGE programu SQL Server 2000 zostaną wycofane w przyszłych wersjach programu SQL Server. SQL Server 2005 zapewnia wsteczną kompatybilność z typami danych, ale prawdopodobnie powinieneś używać zamiast tego VARCHAR (MAX), NVARCHAR (MAX) i VARBINARY (MAX).
źródło