如何在参数化 Cosmos 查询中使用 "LIKE"

How to use "LIKE" in parameterized Cosmos query

我正在使用 Azure.Cosmos API,版本 3.17.1。如果我 运行 像这样对我的 Cosmos 集合进行查询,我会得到我期望的结果:

string Sql = "SELECT c.LastName FROM c where c.LastName like 'Smi%'";
QueryDefinition oQry = new QueryDefinition(Sql);
FeedIterator<myObj> oFI = this.container.GetItemQueryIterator<myObj>(oQry); // returns Smith, Smithers, etc.

如果我尝试对其进行参数化,我将一无所获:

string Sql = "SELECT c.LastName FROM c where c.LastName like '@KeyWord%'";
QueryDefinition oQry = new QueryDefinition(Sql);
oQry.WithParameter(@KeyWord, "Smi");
FeedIterator<myObj> oFI = this.container.GetItemQueryIterator<myObj>(oQry);

这是语法问题还是不受支持?

感谢

不要在参数名称中使用 %,也不需要用引号引起来。

请试试这个代码:

string Sql = "SELECT c.LastName FROM c where c.LastName like @KeyWord";
QueryDefinition oQry = new QueryDefinition(Sql);
oQry.WithParameter("@KeyWord", "Smi%");
FeedIterator<myObj> oFI =  container.GetItemQueryIterator<myObj>(oQry);