1

我试图查看是否有人问过这个问题,它可能已经问过了,但我找不到答案。我正在使用 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?

非常感谢你。

4

2 回答 2

2

加倍%你想逃避它们的地方(即'%%r_%%')。cursor.execute此外,在函数 中插入字符串,如下所示:

cursor.execute(QryString, matter)
于 2013-06-26T21:21:09.543 回答
1

"%% %s"%("Hello",)应用 %s 的东西后,两个 % 符号应该变成一个...

但实际上你应该使用内置的查询东西

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) 

尽管您仍然可能需要%%为文字做%

于 2013-06-26T21:21:10.727 回答