文档章节

MySQL大小写问题

zhangqunshi
 zhangqunshi
发布于 2017/05/29 14:28
字数 560
阅读 8
收藏 0

MySQL大小写问题

表名大小写

mysql对于大小写在windows上系统和Linux上系统不一样。Linux默认情况下区分大小写,而在Windows下数据库名、表名、列名、别名都不区分大小写,即使设置lower_case_table_names=0,在查询时还是不会区分大小写。只是在导入导出时会对大小写有区别。原因是各种操作系统的文件系统对大小写实现上有所不同。WINDOWS的文件系统查询时不区分文件大小写。

Linux上大小写问题可以通过配置进行修改。

mysql> show variables like 'lower%';
| Variable_name | Value |
+------------------------+-------+
| lower_case_file_system | OFF |
| lower_case_table_names | 0 |
+------------------------+-------+
2 rows in set (0.01 sec)

lower_case_file_system:数据库所在的文件系统对文件名大小写敏感度。

  • ON 表示大小写不敏感
  • OFF 表示敏感

lower_case_table_names:表名大小写敏感度

  • 0 表示使用Create语句指定的大小写保存文件
  • 1 表示大小写敏感,文件系统以小写保存
  • 2 表示使用Create语句指定的大小写保存文件,但MySQL会将之转化为小写 (当Linux设置为2时,错误日志显示[Warning]

修改my.cnf后重启数据库

lower_case_table_names=1

查询时强制区分大小写 (字段数据大小写)

前提: 如果默认为大小写不敏感

不区分大小写Sql代码

SELECT * FROM table_name WHERE name LIKE 'a%';  
SELECT * FROM table_name WHERE name LIKE 'A%';  

其结果是一样的

区分大小写Sql代码

为了区分'A%'和'a%':

SELECT * FROM U WHERE binary name LIKE 'a%';  
SELECT * FROM U WHERE binary name LIKE 'A%';  

仅仅多了一个binary,就可以得到不同的结果!

当然,如果需要建表时强制区分大小写,可以这么写:

create  table  table_name(    
     name varchar (20) binary      
); 

设置表或行的collation

还有一种方法就是在查询时指定collation

  • _bin: 表示的是binary case sensitive collation,也就是说是区分大小写的
  • _cs: case sensitive collation,区分大小写
  • _ci: case insensitive collation,不区分大小写

例如:

create table case_bin_test (word VARCHAR(10)) CHARACTER SET latin1 COLLATE latin1_bin; 
create table case_cs_test (word VARCHAR(10)) CHARACTER SET latin1 COLLATE latin1_general_cs; 
SELECT * FROM case_test WHERE word COLLATE latin1_bin LIKE 'F%'; 
SELECT * FROM case_test WHERE word LIKE 'f%' COLLATE latin1_bin; 

参考

© 著作权归作者所有

zhangqunshi
粉丝 10
博文 74
码字总数 31532
作品 0
私信 提问
解决mysql数据库大小写敏感问题

今天在部署java项目到linux服务器上去的时候出现了个小问题,数据库是mysql,项目在我本地(windows环境下)是没问题的。错误信息:2012-09-06 00:01:29,314 INFO [org.springframework.jdbc....

java_T
2012/09/06
4.9K
4
linux mysql 大小写问题

show variables like '%case%' mysql 在linux中与windows中是不同的。在windows中建表表名是不区分大小写的,而在linux是区分大小的的、但是linux中是可以设置的。 ------------------------...

Zero零_度
2016/10/28
26
0
linux mysql 大小写问题

mysql 在linux中与windows中是不同的。在windows中建表表名是不区分大小写的,而在linux是区分大小的的、但是linux中是可以设置的。 ----------------------------------------------- 以下的...

王小盼
2016/05/05
43
0
mysql大小写问题

MySQL的大小写问题 不是一个很大的问题,但是如果不了解的话,却会使用户产生迷惑 ;如下面 insert into t values('A'); insert into t values('a'); 当第二条执行的时候,如果是主键或者有唯...

foolbenben
2012/10/10
0
0
mysql表名大小写敏感

在ubuntu下安装的mysql版本是 5.6.25-0ubuntu1 linux下的mysql的表名是大小写敏范的。而在在windows下安装的mysql是大小写不敏感的。 原因是因为lowercasetable_names该属性在linux下默认为0...

xbuding
2016/04/24
101
0

没有更多内容

加载失败,请刷新页面

加载更多

为什么要在网站中应用CDN加速?

1. 网页加载速度更快 在网站中使用CDN技术最直接的一个好处就是它可以加快网页的加载速度。首先,CDN加速的内容分发是基于服务器缓存的,由于CDN中缓存了不少数据,它能够给用户提供更快的页...

云漫网络Ruan
25分钟前
2
0
亚玛芬体育(Amer Sports)和信必优正式启动合作开发Movesense创新

亚玛芬体育和信必优正式启动合作开发Movesense创新,作为亚玛芬体育的完美技术搭档,信必优利用Movesense传感器技术为第三方开发移动应用和服务。 Movesense基于传感器技术和开放的API,测量...

symbiochina88
36分钟前
2
0
创龙TI AM437x ARM Cortex-A9 + Xilinx Spartan-6 FPGA核心板规格书

SOM-TL437xF是一款广州创龙基于TI AM437x ARM Cortex-A9 + Xilinx Spartan-6 FPGA芯片设计的核心板,采用沉金无铅工艺的10层板设计,适用于高速数据采集和处理系统、汽车导航、工业自动化等领...

Tronlong创龙
36分钟前
2
0
好程序员Java学习路线分享MyBatis之线程优化

  好程序员Java学习路线分享MyBatis之线程优化,我们的项目存在大量用户同时访问的情况,那么就会出现大量线程并发访问数据库,这样会带来线程同步问题,本章我们将讨论MyBatis的线程同步问...

好程序员官方
42分钟前
6
0
IDEA 自定义方法注解模板

IDEA 自定义方法注解模板 1、使用效果 /*** 计算交易费用* @Author wangjiafang* @Date 2019/9/11* @param feeComputeVo* @return*/@PostMapping("/v1/fee_compute")public ApiResp......

小白的成长
42分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部