You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 2.7中SQLite3的LIKE查询如何设置为区分大小写?

让SQLite的LIKE查询区分大小写(Python 2.7)

我之前也碰到过这个问题,SQLite的LIKE默认行为确实容易让人困惑——在Python 2.7的sqlite3模块里,它默认对ASCII字母不区分大小写。不过有几种方法可以让LIKE查询变成区分大小写的,给你列出来:

方法1:查询时使用BINARY操作符

直接在查询中用BINARY修饰列或者匹配值,强制按字节进行比较,这样就能区分大小写了。比如:

import sqlite3

conn = sqlite3.connect('test.db')
cursor = conn.cursor()

# 示例查询:只匹配包含"Test"(首字母大写)的记录
cursor.execute("SELECT * FROM my_table WHERE BINARY name LIKE ?", ('%Test%',))
results = cursor.fetchall()

conn.close()

你也可以把BINARY放在匹配值前面,效果是一样的:

SELECT * FROM my_table WHERE name LIKE BINARY '%Test%';

方法2:创建表时指定列的排序规则为BINARY

如果希望某一列的所有LIKE查询都默认区分大小写,可以在创建表的时候给TEXT列指定COLLATE BINARY排序规则:

cursor.execute("""
    CREATE TABLE my_table (
        id INTEGER PRIMARY KEY,
        name TEXT COLLATE BINARY
    )
""")

这样之后对name列的LIKE查询就会自动区分大小写,不需要每次都加BINARY修饰。

方法3:查询时指定COLLATE BINARY

如果表已经存在,不想修改表结构,也可以在查询末尾加上COLLATE BINARY来强制区分大小写:

SELECT * FROM my_table WHERE name LIKE '%Test%' COLLATE BINARY;

补充说明

SQLite默认的LIKE行为是把ASCII的大小写字母(A-Z和a-z)视为相等,这是它的设计特性。而BINARY排序规则会严格按照字符的字节值进行比较,所以能实现大小写区分的效果。

内容的提问来源于stack exchange,提问作者rth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:35:39