XML 在 WHERE 中使用变量查询

XML Query with a variable in WHERE

我的代码运行良好。但是我想要一个变量在 运行 时间内改变它的值。我想要 C# 中的输出 xml 文件。

declare @MySearch nvarchar(50)
set @MySearch='بودان'

SELECT ID, Family
FROM Table_1
where freetext(Family, @MySearch, LANGUAGE 1025)
FOR XML RAW ('Employee'), ROOT ('Employees'), ELEMENTS XSINIL;

已编辑:

我 运行 此代码并收到此错误:

Null or empty full-text predicate.

我想要 C# 中的输出 xml 文件。

declare @MySearch nvarchar(50)
--set @MySearch=N'بودان'    
SELECT ID, Family
FROM Table_1
where freetext(Family, @MySearch, LANGUAGE 1025)
FOR XML RAW ('Employee'), ROOT ('Employees'), ELEMENTS XSINIL;

“N”与众不同,您需要它两次...

试试这个:

DECLARE @v1 VARCHAR(10)='بودان';
DECLARE @v2 VARCHAR(10)=N'بودان';
DECLARE @nv1 NVARCHAR(10)='بودان';
DECLARE @nv2 NVARCHAR(10)=N'بودان';

SELECT @v1,@v2,@nv1,@nv2;

结果

?????   ?????   ?????   بودان

只有最后一次尝试才能显示您所需要的...

原因:普通字符串SET @v='MyString'未作为UNICODE

处理

将变量声明为 NVARCHAR 是不够的,也不足以存储像 N'SomeText'.

这样的 unicode 文字

编辑:

经过长时间的评论讨论,解决问题的最后一句话是:

当然你必须连接到数据库才能执行此操作!

无论您想对数据库做什么,首先您需要一个打开的连接。