2008-09-10 111 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