如何在sql server中查询查询中的文本?

时间:2008-09-10 15:11:43

标签: sql sql-server

以下SQL:

SELECT notes + 'SomeText'
FROM NotesTable a 

给出错误:

  

数据类型nvarchar和text在add运算符中不兼容。

6 个答案:

答案 0 :(得分:78)

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

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

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

答案 1 :(得分:22)

您可能也想要考虑NULL值。在您的示例中,如果列 notes 具有空值,则结果值将为NULL。如果您希望空值表现为空字符串(以便答案出现'SomeText'),那么使用IsNull函数:

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

答案 2 :(得分:19)

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

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

答案 3 :(得分:6)

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

答案 4 :(得分:4)

另一个选项是CONCAT命令:

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

答案 5 :(得分:2)

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