如何连接sql server中查询中的文本?

以下SQL:

SELECT notes + 'SomeText' FROM NotesTable a 

给出错误:

数据typesnvarchar和文本在添加运算符中不兼容。

唯一的办法是将您的文本字段转换为nvarchar字段。

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

否则,我build议在你的应用程序中进行连接。

你可能也想考虑NULL值。 在你的例子中,如果列注释有一个空值,那么结果值将是NULL。 如果你希望空值的行为像空string(所以答案出来“SomeText”),然后使用IsNull函数:

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

如果使用的是SQL Server 2005或更高版本,则根据Notes字段中的数据大小,可能需要考虑将其转换为nvarchar(max),而不是转换为可能导致string截断的特定长度。

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

你必须明确地将stringtypes转换为相同的string来连接它们。在你的情况下,你可以通过在'SomeText'(N'SomeText')前添加一个'N'来解决问题。 如果这不起作用,请尝试Cast('SomeText'作为nvarchar(8))。

如果您使用的是SQL Server 2005(或更高版本),则可能需要考虑在表定义中切换到NVARCHAR(MAX); SQL Server 2000的TEXT,NTEXT和IMAGE数据types将在SQL Server的未来版本中被弃用。 SQL Server 2005提供了对数据types的向后兼容性,但您应该使用VARCHAR(MAX),NVARCHAR(MAX)和VARBINARY(MAX)。