2008-09-10 106 views

回答

74

唯一的辦法是你的文本字段轉換爲一個nvarchar場。

Select Cast(notes as nvarchar(4000)) + 'SomeText' 
From NotesTable a 

否則,我建議在應用程序中進行連接。

+0

謝謝,當時的錯誤信息是誤導性的。 – 2008-09-10 15:19:38

+0

謝謝,幫忙捏一下 – jrhicks 2009-11-17 16:41:50

6

您必須明確地將字符串類型轉換爲相同的字符串以連接它們。在您的情況下,您可以通過在'SomeText'(N'SomeText')前添加一個'N'來解決問題。如果這不起作用,請嘗試Cast('SomeText'作爲nvarchar(8))。

18

如果您使用SQL Server 2005或更高版本(取決於Notes字段中數據的大小),您可能需要考慮將其轉換爲nvarchar(max),而不是將其轉換爲可能導致字符串截斷的特定長度。

Select Cast(notes as nvarchar(max)) + 'SomeText' From NotesTable a 
2

如果您在使用SQL Server 2005(或更高版本),你可能要考慮切換到NVARCHAR(MAX)在表中定義; SQL Server 2000的TEXT,NTEXT和IMAGE數據類型將在SQL Server的未來版本中被棄用。 SQL Server 2005提供了對數據類型的向後兼容性,但您應該使用VARCHAR(MAX),NVARCHAR(MAX)和VARBINARY(MAX)。

20

您可能也想要考慮NULL值。在你的例子中,如果列筆記有一個空值,那麼結果值將爲NULL。如果你想空值表現爲空字符串(這樣的答案出來「SomeText」),然後使用IsNull函數:

Select IsNull(Cast(notes as nvarchar(4000)),'') + 'SomeText' From NotesTable a 
0

另一種選擇是CONCAT命令:

SELECT CONCAT(MyTable.TextColumn, 'Text') FROM MyTable