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

Gre*_*gle 78 sql sql-server

以下SQL:

SELECT notes + 'SomeText'
FROM NotesTable a 
Run Code Online (Sandbox Code Playgroud)

给出错误:

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

Gat*_*ler 79

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

Select Cast(notes as nvarchar(4000)) + 'SomeText'
From NotesTable a
Run Code Online (Sandbox Code Playgroud)

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


Chr*_*eld 23

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

Select IsNull(Cast(notes as nvarchar(4000)),'') + 'SomeText' From NotesTable a
Run Code Online (Sandbox Code Playgroud)


Sco*_*ols 21

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

Select Cast(notes as nvarchar(max)) + 'SomeText' From NotesTable a
Run Code Online (Sandbox Code Playgroud)

  • 这应该是正确的答案。它避免了截断文本。 (2认同)

Cra*_*aig 6

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


Dav*_*ann 5

另一个选项是CONCAT命令:

SELECT CONCAT(MyTable.TextColumn, 'Text') FROM MyTable
Run Code Online (Sandbox Code Playgroud)