在PostgreSQL和SQLITE3中查询小写字母

时间:2019-03-20 20:08:30

标签: python postgresql sqlite tkinter

无论tkinter是小写还是大写字母,无论用户使用哪种大小写字母,如何从数据库中选择记录?在MySQL中,我使用了BINARY,但是PostgreSQL和SQLITE呢?

1 个答案:

答案 0 :(得分:0)

在MySQL中,默认排序规则不区分大小写。在SQLite中,它是二进制的。在PostgreSQL中,它默认为语言环境定义的操作系统定义的排序规则。

您可以使用lower强制不区分大小写的匹配:

select a from f where lower(a) = lower('myString')

在PostgreSQL中,您也可以为列使用不区分大小写的数据类型,例如citext

create table a (f citext);

另一种选择是使用ilike忽略大小写。 (请注意,如果要进行文字匹配,则应使用ilike来转义特殊字符。)

select f from a where f ilike 'myString';

在SQLite中,您可以在列定义中使用指令collate nocase

create table a (f text collate nocase);

或在查询中:

select f from a where f = 'myString` collate nocase;