带有WHERE变量的XML查询

时间:2016-06-29 12:02:38

标签: sql sql-server xml full-text-search

我的代码效果很好。但我希望有一个变量来改变它在运行时的值。我想在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;

编辑:

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

  

空或全文谓词。

我希望xml中的输出C#文件。

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;

1 个答案:

答案 0 :(得分:1)

" 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文字。

编辑:

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

当然,您必须与数据库连接才能执行此操作!

您希望在数据库中使用什么,首先需要打开连接。