如何在Azure sql_input中使用LIKE SQL命令的参数
在Azure的V2 Python云函数中,我想把URL中的一个参数用到查询Azure SQL数据库里。但是,当我使用SQL的LIKE
时,遇到了一些问题。
我已经成功建立了与数据库的连接,也能在查询中使用URL中的参数,方法是用了一些装饰器:
@app.route("select_name/{name_string}")
@app.sql_input(arg_name="people",
command_text="SELECT * FROM dbo.test WHERE name = @Name",
command_type="Text",
parameters="@Name={name_string}",
connection_string_setting="SqlConnectionString")
但是,当我尝试把查询从WHERE
改成LIKE
并结合使用UPPER时,出现了以下错误:
@app.route("select_name/{name_string}")
@app.sql_input(arg_name="people",
command_text="SELECT * FROM dbo.test WHERE UPPER(name) LIKE UPPER('%@Name%')",
command_type="Text",
parameters="@Name={name_string}",
connection_string_setting="SqlConnectionString")
... 错误信息是:
System.Private.CoreLib: 执行函数时出错: Functions.get_people_by_name. Microsoft.Azure.WebJobs.Host: '%@Name%' 无法解析为一个值。
我明白在SQL查询中解析变量时,这种语法似乎不太好用。
我该如何解决这个问题?也许还有其他更灵活的方法可以从云函数查询Azure SQL?你能推荐一些基于Python的解决方案吗?不一定要依赖装饰器。
同时,如果你能推荐一些关于从云函数进行SQL查询和构建API的好资源,我会非常感激。我发现Azure的文档不太好用,希望能找到其他好的资源。
1 个回答
0
你可以使用类似这样的语句:SELECT * FROM dbo.test WHERE UPPER(name) LIKE UPPER('%' + @Name + '%')