Następujący SQL:
SELECT notes + 'SomeText'
FROM NotesTable a
Podaj błąd:
Typy danych nvarchar i text są niezgodne w operatorze dodawania.
Odpowiedzi:
Jedynym sposobem byłoby przekonwertowanie pola tekstowego na pole nvarchar.
Select Cast(notes as nvarchar(4000)) + 'SomeText'
From NotesTable a
W przeciwnym razie sugeruję wykonanie konkatenacji w Twojej aplikacji.
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
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
Inną opcją jest polecenie CONCAT :
SELECT CONCAT(MyTable.TextColumn, 'Text') FROM MyTable
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).
text
jako „ogromne” 4000,nvarchar
aby upewnić się, że prawie wszystko będzie pasować?