作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用 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/
我是一名优秀的程序员,十分优秀!