修改数据库大小写不敏感

1、Linux 系统默认情况下MySQL数据库是区分大小写的;因此要将mysql设置成不区分大小写,在/etc/my.cnf 配置后面加上一行

lower_case_table_names=0(0:大小写敏感;1:大小写不敏感)

最后重启一下MySql服务即可。

2、Windows系统默认是区分大小写的,修改MySql Server安装目录下配置my.ini 文件 ,在mysqld节下加入下面一行配置忽略大小写

set-variable=lower_case_table_names=0 (0:大小写敏感;1:大小写不敏感)

最后重启一下MySql服务即可。

3、数据库大小写敏感配置查询语句

mysql> show variables like ‘lower%’;
±-----------------------±------+
| Variable_name | Value |
±-----------------------±------+
| lower_case_file_system | OFF |
| lower_case_table_names | 1 |
±-----------------------±------+
2 rows in set (0.00 sec)

### PostgreSQL 中创建大小写敏感索引的方法 在 PostgreSQL 中,默认情况下,字符串比较是区分大小写的。为了实现大小写敏感的查询操作,可以通过以下几种方法来创建大小写敏感的索引。 #### 方法一:使用 `LOWER()` 函数创建函数索引 通过定义基于 `LOWER()` 的函数索引,可以在查询时忽略大小写差异。这种索引会存储字段值的小写形式,从而加速大小写无关的查询。 ```sql CREATE INDEX idx_case_insensitive ON your_table (LOWER(your_column)); ``` 当执行如下查询时,PostgreSQL 将自动利用该索引来优化性能: ```sql SELECT * FROM your_table WHERE LOWER(your_column) = LOWER('YourValue'); ``` 这种方法适用于大多数场景,并且能够显著提高查询效率[^1]。 --- #### 方法二:使用 `citext` 扩展数据类型 PostgreSQL 提供了一个名为 `citext` 的扩展模块,专门用于处理大小写敏感的文本列。启用此扩展后,可以直接将列的数据类型声明为 `citext`,而无需手动编写额外逻辑。 启用 `citext` 扩展: ```sql CREATE EXTENSION IF NOT EXISTS citext; ``` 创建表并指定列为 `citext` 类型: ```sql CREATE TABLE your_table ( id SERIAL PRIMARY KEY, your_column CITEXT ); ``` 此时,任何对该列的操作都会自动忽略大小写差异。例如: ```sql INSERT INTO your_table (your_column) VALUES ('Test'), ('TEST'), ('tEsT'); SELECT * FROM your_table WHERE your_column = 'test'; -- 返回所有匹配项,无论大小写如何。 ``` 需要注意的是,在某些复杂查询条件下可能仍需显式调用 `LOWER()` 或其他函数[^3]。 --- #### 方法三:批量调整现有索引至小写形式 如果已有大量带有双引号的大写字母命名的索引,则可通过脚本将其统一更改为小写形式以消除大小写敏感性问题。下面是一个示例函数,它遍历公共模式中的所有索引并将它们重命名为小写版本: ```sql CREATE OR REPLACE FUNCTION changetolower() RETURNS VOID AS $$ DECLARE cursse REFCURSOR; iname CHAR(64); iname2 CHAR(64); BEGIN OPEN cursse FOR SELECT indexname FROM pg_indexes WHERE schemaname='public'; FETCH cursse INTO iname; WHILE FOUND LOOP iname2 := lower(iname); BEGIN EXECUTE format('ALTER INDEX "%s" RENAME TO %I;', iname, iname2); EXCEPTION WHEN OTHERS THEN RAISE NOTICE '%,%', iname, SQLERRM; CONTINUE; END; RAISE NOTICE 'Changed index % successfully.', iname; FETCH cursse INTO iname; END LOOP; END; $$ LANGUAGE plpgsql; ``` 运行上述函数即可完成转换过程[^4]。 --- #### 注意事项 尽管以上方案均能有效解决问题,但在实际应用过程中还需注意以下几点: - **性能影响**:对于高并发读取环境下的大型表格来说,维护额外的功能索引可能会增加写入开销。 - **兼容性考量**:引入新的扩展(如 `citext`)之前应评估目标系统的支持情况以及潜在风险。 - **业务需求适配**:并非所有的应用程序都需要完全无视字母大小区别对待;因此设计阶段就要充分理解具体要求再做决定。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值