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


Answers:


81

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

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

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


因此,您要投放text“ 4000”nvarchar以确保几乎所有内容都适合吗?
Matthieu

23

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

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

21

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

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

2
这应该是正确的答案。它避免了截断文本。
比利2015年

它使用更多的内存还是以某种方式“自动适应”源大小?
Matthieu

6

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



2

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.