SQL 服务器函数 returns 无法识别的文本

SQL Server function returns unrecognized text

我创建了一个用户定义的函数,它从 HTML 标签中剥离输入文本,但发现它出于某种原因也会破坏阿拉伯文本。

我想:也许函数的逻辑导致文本在某处被转换为 VARCHAR,所以我使该函数非常简单。它需要一个 NVARCHAR 并将 returns 它传递给调用者。这是功能:

CREATE FUNCTION [dbo].[udf_test] (@string NVARCHAR(MAX))
RETURNS NVARCHAR(MAX) AS
begin
  return @string
end

那我做了个小测试:

select dbo.udf_test('إختبار اللغة العربية Testing Arabic ');

输出是:

?????? ????? ??????? Testing Arabic 

如果我这样做,输出很好:

select 'إختبار اللغة العربية Testing Arabic ';

为什么会这样?

您需要明确指定字符串为 NVARCHAR 类型。在字符串前加一个 N 应该可以解决问题

select dbo.udf_test(N'إختبار اللغة العربية Testing Arabic ');