python中数据库like模糊查询

在Python中%是一个格式化字符,所以如果需要使用%则需要写成%%。

将在Python中执行的sql语句改为:
sql = "SELECT * FROM table_test WHERE value LIKE '%%%%%s%%%%'" % test_value

执行成功,print出SQL语句之后为:
SELECT * FROM table_test WHERE value LIKE '%%public%%'

Python在执行sql语句的时候,同样也会有%格式化的问题,仍然需要使用%%来代替%。因此要保证在执行sql语句的时候格式化正确。而不只是在sql语句(字符串)的时候正确。
### 达梦数据库中处理包含特殊字符的LIKE模糊查询 在达梦数据库中,当使用 `LIKE` 关键字进行模糊查询时,如果模式字符串中含有特殊字符(如 `%`, `_`, `[`, `]`),这些字符会被解释为通配符或特定含义。为了能够匹配实际存在的这些特殊字符而不是将其作为通配符对待,在构建查询语句时需要采取一定的措施来转义它们。 对于想要精确匹配而非当作通配符使用的百分号(`%`)和下划线(`_`),可以在其前加上反斜杠`\`来进行转义[^1]。然而值得注意的是,不同的SQL实现可能有不同的默认转义字符;因此建议显式指定转义字符以确保兼容性和预期行为。这可以通过在 `LIKE` 后面紧跟 `ESCAPE '\'` 来完成,其中 `\` 是所选作转义用途的符号。 下面给出一段Python代码示例展示如何编写这样的查询: ```python import pymssql # 假设这里连接的是支持DMBS协议的库 conn = pymssql.connect(server='localhost', user='sa', password='your_password', database='testdb') cursor = conn.cursor() pattern_with_special_chars = "abc\%def_g" # 转义后的模式串 query = f""" SELECT * FROM your_table_name WHERE column_name LIKE '{pattern_with_special_chars}' ESCAPE '\\' """ try: cursor.execute(query) rows = cursor.fetchall() for row in rows: print(row) except Exception as e: print(f"An error occurred: {e}") finally: cursor.close() conn.close() ``` 此段程序尝试在一个名为 `your_table_name` 的表里寻找那些含有形似 `"abc%def_g"` (注意这里的 `%` 和 `_` 已经被成功转义)的内容,并打印出所有符合条件的结果记录。 另外一种方式是在配置文件或者初始化脚本中设定全局变量 `dm.ini` 中的 `LIKE_ESCAPE_CHAR` 参数值,从而改变整个系统的默认转义字符设置。不过这种方式影响范围较大,通常只适用于有严格需求的应用场景[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值