如何在SQL Server中的查询中连接文本?

时间:2020-03-05 18:50:48  来源:igfitidea点击:

以下SQL:

SELECT notes + 'SomeText'
FROM NotesTable a

给出错误:

The data types nvarchar and text are incompatible in the add operator.

解决方案

回答

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

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

否则,建议我们在应用程序中进行串联。

回答

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

回答

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

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

回答

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

回答

我们可能还需要考虑NULL值。在示例中,如果列注释的值为空,则结果值为NULL。如果我们希望null值表现为空字符串(以使答案出现在" SomeText"中),请使用IsNull函数:

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