我试着看看这个问题是否已经被问过,但是我找不到答案。我正在使用pyodbc从python脚本查询MS SQL Server。
我正在定义一个查询SQL的函数。查询字符串既有'%R_%',也可以作为SQL解释的通配符,还有'%s',用于在python中将变量放在单引号之间。它看起来像这样:
def numcust(matter):
QryString = """
select count(distinct user_id)
from dbo.tbl_case_details
where request like '%r_%'
and project_id in
(
select distinct project_id
from dbo.tbl_projects
where matter_number = '%s'
);
""" % matter
cursor.execute(QryString)
row = cursor.fetchone()
return row[0]
如何为r_转义通配符,以便我可以成功将其传递给SQL?
谢天谢地。
答案 0 :(得分:2)
将您要迁移它们的%
加倍(即'%%r_%%'
)。
另外,在cursor.execute
函数中插入字符串,如下所示:
cursor.execute(QryString, matter)
答案 1 :(得分:1)
"%% %s"%("Hello",)
两个百分号应成为一个......
但实际上你应该使用内置的查询东西
QryString = """
select count(distinct user_id)
from dbo.tbl_case_details
where request like '%r_%'
and project_id in
(
select distinct project_id
from dbo.tbl_projects
where matter_number = '%s'
);
"""
cursor.execute(QryString,matter)
虽然您仍然可能需要为文字%%
%