如何解决如何使用pyodbc将CONTAINSTABLE参数化查询传递到SQL Server,条件是将条件与条件项包含在一起“ AND”在一起?
背景/问题
根据Microsoft文档,CONTAINSTABLE查询的语法使用CONTAINS搜索条件,据我所知,该条件必须完全用单引号引起来。当我尝试在pyodbc中参数化查询时,会出现问题。指定查询条件部分所需的任何形式的引号似乎都会导致pyodbc / odbc驱动程序忽略参数标记,从而导致臭名昭著的“ SQL包含x参数标记,但提供了x参数”错误。
我正在(尝试)做什么
我得到用户搜索输入,我将其分解成单词列表并建立一个动态SQL CONTAINS搜索条件,该条件放入参数标记,而不是最终插入到游标中其余SQL语句字符串中的实际单词。 execute()语句。
Ex:用户搜索“防回流装置”
使用this answer作为解决将多个单词放入全文CONTAINS / CONTAINSTABLE查询的问题的一般方法。我的动态CONTAINSTABLE条件生成为? AND ? AND ?
,然后将其插入到我的查询中(该查询实际上包含此查询以及另一个与UNION
组合的全文查询,该查询在单词之间使用NEAR
关键字而不是{{ 1}})通过AND
。
我的代码
.format()
上面的代码设法将搜索词传递到参数中,并且可以识别正确数量的参数标记,但是在执行语句时遇到了SQL错误:
“('(42000',” [42000] [Microsoft] [用于SQL Server的ODBC驱动程序17] [SQL Server]关键字'AND'附近的语法不正确。(156)(SQLExecDirectW); [42000] [Microsoft] [SQL Server的ODBC驱动程序17] [SQL Server]'NEAR'附近的语法不正确(102); [42000] [Microsoft] [SQL Server的ODBC驱动程序17] [SQL Server]声明无法准备。 (8180)“)”
当插入FREETEXTTABLE子查询中的搜索字符串以及'“ [word] AND [word] AND ...'和'” [word] NEAR [word] NEAR ..时,查询确实按预期工作。 ”直接设置条件并在SSMS中运行。
当尝试使用pyodbc作为动态T-SQL参数化查询进行这项工作时,似乎有互斥选项。我试图在这里找到答案,但是没有一个参数化查询/ pyodbc /全文T-SQL问题似乎可以解决我的问题。预先感谢您的帮助!
其他信息
- SQL Server 2016
- Python 3.6
- 在Windows上运行
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。