如何在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