【问题标题】:Python "REPLACE" command in a SQL query(Error message)SQL 查询中的 Python“REPLACE”命令(错误消息)
【发布时间】:2019-02-14 13:35:49
【问题描述】:

我是 python 新手,我需要这个查询来检查我的数据库是否正常工作。有很多查询,但它只是其中之一。

import pyodbc
db_file = 'C:\\Users\\****\\Desktop\\bbbb.mdb' #define the location of your Access file
odbc_conn_str = 'DRIVER={Microsoft Access Driver (*.mdb)};DBQ=%s' %(db_file) # define the odbc connection parameter
conn = pyodbc.connect(odbc_conn_str)
cursor = conn.cursor() # create a cursor
sql_update_statement = "UPDATE NUMARATAJ SET KAPINUMERIK = IIf (ISNUMERIC (LEFT (REPLACE(KAPINO,'-','/'),4)=-1),LEFT(KAPINO,4))" # edit the SQL statement that you want to execute
cursor.execute(sql_update_statement) # execute the SQL statement
cursor.commit()
cursor.close()
conn.close()

当我尝试运行这段代码时,它说:

  File "C:\Users\****\Desktop\aa2a.py", line 9, in <module>
    cursor.execute(sql_update_statement) # execute the SQL statement
pyodbc.ProgrammingError: ('42000', "[42000] [Microsoft][ODBC Microsoft Access Sürücüsü] Undefined 'REPLACE' function in the expression. (-3102) (SQLExecDirectW)")

我怎样才能修复它,或者让它工作,你能帮我吗?

【问题讨论】:

    标签: python sql ms-access replace


    【解决方案1】:

    可能是:

    sql_update_statement = "UPDATE NUMARATAJ SET KAPINUMERIK = LEFT(KAPINO,4) WHERE ISNUMERIC(LEFT(REPLACE(KAPINO,'-','/'),4)"
    

    但是,Replace 是 VBA 函数,而不是 Access SQL,所以这可能就是您收到错误的原因。

    简单尝试:

    sql_update_statement = "UPDATE NUMARATAJ SET KAPINUMERIK = LEFT(KAPINO,4) WHERE ISNUMERIC(LEFT(KAPINO),4)"
    

    【讨论】:

      【解决方案2】:

      有几个“VBA 函数”不受旧版“Jet”ODBC 驱动程序 (Microsoft Access Driver (*.mdb)) 的直接支持,但由较新的“ACE”ODBC 驱动程序 (@987654322) 直接支持@)。 Replace 是这些函数之一。

      因此,如果您确实需要使用 Replace 函数,您可以下载并安装 32 位版本的 Access Database Engine Redistributable 并使用更新的 ODBC 驱动程序。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-06-28
        • 1970-01-01
        • 1970-01-01
        • 2018-05-28
        • 2021-12-07
        • 2021-08-27
        • 2019-04-05
        • 1970-01-01
        相关资源
        最近更新 更多