美文网首页
数据库大小写敏感问题

数据库大小写敏感问题

作者: 东皇Amrzs | 来源:发表于2015-05-24 10:47 被阅读1997次

Oracle:

默认是大小写不敏感,表名、字段名等不区分大小写,小写字母会自动转换为大写字母; 需要用小写字母时需要使用双引号,或借助函數upper()和lower();

PostgreSQL:

默认是大小写不敏感,表名、字段名等不区分大小写,大写字母会自动转换为小写字母; 需要用大写字母时需要使用双引号,或借助函數upper()和lower();

SQLServer:

默认是大小写不敏感; 可以通过修改排序规则改变: 右击数据库--->属性----->选项---->排序规则: Chinese_PRC_CS_AS 区分大小写、 Chinese_PRC_CI_AS 不区分大小写。

MySQL:

__在Linux下数据库名、表名、列名、别名大小写规则是这样的: __
1、数据库名与表名是严格区分大小写的;
2、表的别名是严格区分大小写的;
3、列名与列的别名在所有的情况下均是忽略大小写的
4、变量名也是严格区分大小写的;

MySQL在Windows下都不区分大小写
所以在不同操作系统中为了能使程序和数据库都能正常运行,最好的办法是在设计的时候都转为小写,但是如果在设计的时候已经规范化大小写了,那么在Windows环境下只要对数据库的配置做下改动就行了,具体操作如下: 在MySQL的配置文件中my.ini [mysqld] 中增加一行 lower_case_table_names = 1 参数解释: 0:区分大小写 1:不区分大小写。

在MySQL 中,数据库和表就对于那些目录下的目录和文件。因而,操作系统的敏感性决定数据库和表命名的大小写敏感。这就意味着数据库和表名在 Windows 中是大小写不敏感的,而在大多数类型的 Unix 系统中是大小写敏感的。奇怪的是列名与列的别名在所有的情况下均是忽略大小写的,而表的别名又是区分大小写的。
要避免这个问题,你最好在定义数据库命名规则的时候就全部采用小写字母加下划线的组合,而不使用任何的大写字母。

SQLite:

大小写敏感,具体:
1.创建表、列的时候,SQL语句里是什么大小写,表名、列名就是什么大小写;
2.SQL语句执行的时候:表名、列名大小写不敏感,都能识别;
3.SQL语句里面,“=”还是 LIKE 都是大小写敏感;
那么SQLite怎么区分大小写查询呢,以下是三种解决方案:
方案一:使用大小写转换函数LOWER、UPPER

1.select * from test where lower(name) = 'abcde';
2.select * from test where lower(name) = lower('ABCDE');
(1).select * from test where upper(name) = upper('Abcde');
.........
备注:lower() 、upper()为sqlite里面函数

方案二:在进行比较时强制声明不区分大小写

select * from test where name = 'ABCDE' COLLATE NOCASE;

方案三:创建表时声明该字段不区分大小写

create table test (_id Integer,name Text COLLATE NOCASE );

说明:
1.如果在任何情况下都不需要对大小写敏感,方案三是最好的解决方案;
2.如果只是少量查询对大小写不敏感,可以用方案二。
3.而方案一由于用到了函数,可能有额外的性能消耗,不推荐使用。

SELECT * FROM User WHERE account = 'asdf';  
select * from User where account = 'asdf';  
Select * From USER WHERe ACCOUNT = 'asdf';  
SELECT * FROM User WHERE lower(account) = lower('asdf');  
SELECT * FROM User WHERE account = 'asdf' COLLATE NOCASE;  

相关文章

  • KingBaseV8人大金仓数据库 | 大小写敏感问题

    1、查询数据库大小写是否敏感 如果显示 on,为大小写敏感;显示 off ,为大小写不敏感。 2、大小写是否敏感,...

  • 添加GUC参数

    添加GUC参数vb_casesensitive,设置数据库的大小写敏感。如为on,则大小写敏感,则与现行数据库实现...

  • mysql主键大小写问题

    mysql的varchar做主键时,大小写不敏感。 但是erp对应的oracle数据库大小写不敏感,导致数据进入业...

  • 数据库大小写敏感问题

    Oracle: 默认是大小写不敏感,表名、字段名等不区分大小写,小写字母会自动转换为大写字母; 需要用小写字母时需...

  • MySQL 调整大小写敏感度

    背景 项目连接数据库提示表名不存在时,有可能是数据库对大小写的敏感设置导致的误判,这里记录下修改大小写敏感度的方式...

  • 简介

    数据库大小写不敏感 字符串用单引号包裹 进入数据库环境 sqlplus username/password as ...

  • Mariadb数据库——设置Mariadb大小写不敏感

    Mariadb数据库——设置Mariadb大小写不敏感 背景 日常我们开发时,我们会遇到各种各样的奇奇怪怪的问题(...

  • SQLite区分大小写查询

    大部分数据库在进行字符串比较的时候,对大小写是不敏感的。但是,在SQLite中,对大小写是敏感的。假设表Test的...

  • 导数据遇到的问题之重复索引的问题

    在给nlp组导入数据到MySQL中遇到的问题之一,数据库设置的是大小写不敏感,然而,业务需要,要求keyword字...

  • 数据库序2

    选择数据库USE name <==> describe $name; SQL语句大小写不敏感多条SQL语句必...

网友评论

      本文标题:数据库大小写敏感问题

      本文链接:https://www.haomeiwen.com/subject/iycrqttx.html