主要问题:
有没有办法在C#
信息:
我正尝试在C#
SELECT Name FROM Production.Product
WHERE CONTAINS(Name, '"chain*"');
我将其解释如下:
string selectCommand= @"select Name from Production.Products
WHERE contains (Name,'\"" + chain+ "*\"')");
但是我把字符串改回来了:
“WHERE包含(名称,'\”链\“')”
我也试过这个SOF question的方式,但它也没有用!:
string selectCommand= @"select Name from Production.Products
where contains (doc.document_name,'"""""" + full + """"""')");
答案 0 :(得分:8)
如果查看string literals的文档,您会发现有两种格式。常规格式,您必须转义以下所有字符:
', ", \, 0, a, b, f, n, r, t, u, U, x, v.
所以你的字符串应写成如下:
string query = "WHERE CONTAINS(Name, \'\"chain*\"\');";
或逐字文字,前面带有'at'符号,您只能通过'加倍'来转义双引号:
string query = @"WHERE CONTAINS(Name, '""chain*""');";
所以只需从字符串中删除“@”即可。
答案 1 :(得分:7)
因为你的字符串开头有一个@
string selectCommand= "select Name from Production.Products where contains (doc.document_name,\'\"" + full + "*\"\');";
您基本上需要逃避'
和"
答案 2 :(得分:1)
只需在字符串的开头删除@即可。
在字符串中保留反斜杠的原因是因为您已经告诉字符串不要通过将@放在字符串前面来替换转义的字符序列。删除@将允许您的转义字符转义。
答案 3 :(得分:0)
这样的事情可能是:
string full = "abc";
string selectCommand= @"select Name from Production.Products where contains (doc.document_name,'""" + full + "*\"')";
答案 4 :(得分:0)
“@”在这里不会帮到你。删除它,你应该没事。这应该有效:
Console.WriteLine("...(doc.document_name,'\"" + full + "*\"')");
如果你真的想保留“@”,试试这个:
Console.WriteLine(@"...(doc.document_name,'""" + full + "*\"')");