Sql 其中包含变量的XML查询

Sql 其中包含变量的XML查询,sql,sql-server,xml,full-text-search,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; 编辑: 我运行

我有一个很好用的代码。但是我想有一个变量在运行时改变它的值。我想要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或空全文谓词

我想要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;

N起作用,你需要它两次

试试这个:

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

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

?????   ?????   ?????   بودان
只有最后一次尝试才能证明你需要什么

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

将变量声明为NVARCHAR或存储类似于N'SomeText'的unicode文本都是不够的

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

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


无论您希望如何处理数据库,首先都需要打开连接。

如果要初始化NVARCHAR变量,应始终使用N前缀作为字符串文字!使用set@MySearch=N'بودان'保存文本的Unicode!如果您在实际代码中也设置了@MySearch之前的两个减号,那么根据您的编辑,新问题将很容易解释:-无论如何:如果您的代码使用给定的文本,而不是使用Nand变量,那么它也应该使用该变量…@user2111639,再次说明:如果您的注释中没有@Shnugo,则不会出现警报。。。再说一次:我不明白你想要什么。。。如果要运行SELECT,则必须连接数据库。。。还有什么?您希望如何通过XML文件执行操作?如果你从C中调用它,你应该学会使用参数。但这会遇到一个全新的问题。。。我的建议是:如果原来的问题解决了,就接受我的答案来结束这个问题,如果你喜欢我的答案,就投赞成票。然后开始一个新问题,以避免变色龙问题…@user2111639,太好了,得到了警告:-你的新问题类似于*我如何使用C中的参数调用SELECT语句。但是-老实说-如果你搜索这个,你会发现很多问题都有答案。因此,从一些研究开始,寻找像SqlCommand这样的类,学习如何添加类型和值的参数。而且-如果你真的开始一个新问题-在这里放置一个带有@Shnugo的链接。我会再帮你一次。如果你愿意的话,如果这个问题得到解决,最好在投票柜台下面的接受检查上打勾。快乐编码@user2111639抱歉,这绝对不清楚。。。无论是返回表数据还是XML,调用哪种SELECT都无关紧要。这类似于从SomeValue=@YourParam;-如果需要,您可以为XML添加。。。。现在的问题是设置参数的值?你是从C打过来的,是吗?SqlCommand有一个参数列表。您可以添加所需的参数并调用它。当然,您必须连接数据库才能执行此操作。。。