gpt4 book ai didi

sql-server - 如何将 SQL LIKE '%value%' 运算符与 Azure Functions SQL 绑定(bind)结合使用?

转载 作者:行者123 更新时间:2023-12-02 07:53:04 26 4
gpt4 key购买 nike

使用 Azure Function 预览版 SQL Input Binding ,您可以通过在绑定(bind)中指定它来轻松执行 SQL 查询,例如:

 [FunctionName("GetToDoItem")]
public static IActionResult Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "gettodoitem")]
HttpRequest req,
[Sql("select [Id], [order], [title], [url], [completed] from dbo.ToDo where Id = @Id",
CommandType = System.Data.CommandType.Text,
Parameters = "@Id={Query.id}",
ConnectionStringSetting = "SqlConnectionString")]
IEnumerable<ToDoItem> toDoItem)
{
return new OkObjectResult(toDoItem.FirstOrDefault());
}
...

一旦我尝试使用 LIKE 运算符,例如:

 [FunctionName("GetToDoItem")]
public static IActionResult Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "gettodoitem")]
HttpRequest req,
[Sql("select [Id], [order], [title], [url], [completed] from dbo.ToDo where Id = @Id and title like '%Stackoverflow%'",
CommandType = System.Data.CommandType.Text,
Parameters = "@Id={Query.id}",
ConnectionStringSetting = "SqlConnectionString")]
IEnumerable<ToDoItem> toDoItem)
{
return new OkObjectResult(toDoItem.FirstOrDefault());
}
...

我遇到如下异常:

错误索引方法“GetToDoItem”“%Stackoverflow%”未解析为值。

据我了解,这是由于 app setting lookup of the binding expressions ,但我想不出一种方法来“逃避”这些百分号。目前,我唯一的解决方法是手动执行查询。

还有其他选项可以使用百分号进行类似 SQL 的比较吗?我尝试过使用双 %% 符号以及用反斜杠转义 %。

最佳答案

这是一个解决方案。

如果发现有一种语法可以转义百分号字符,那么这将立即变得过时。

但是避免此问题的一种方法是更改​​查询,如下所示

SELECT [Id],
[order],
[title],
[url],
[completed]
FROM dbo.ToDo
WHERE Id = @Id
AND title LIKE Concat(Char(37), 'Stackoverflow', Char(37))

这应该得到常量折叠(在 SQL Server 执行计划中)

title like '%Stackoverflow%'

在实际查询字符串中不包含任何文字 %

关于sql-server - 如何将 SQL LIKE '%value%' 运算符与 Azure Functions SQL 绑定(bind)结合使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71914897/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com