Mysql大小写敏感的问题

一、1 CREATE TABLE NAME(name VARCHAR(10));

对这个表,缺省情况下,下面两个查询的结果是一样的:

代码如下:

SELECT * FROM TABLE NAME WHERE name='clip';
        SELECT * FROM TABLE NAME WHERE name='Clip';

MySql默认查询是不区分大小写的,如果需要区分他,必须在建表的时候,Binary标示敏感的属性.

代码如下:

CREATE TABLE NAME(
          name VARCHAR(10) BINARY
        );

2 在SQL语句中实现 SELECT * FROM TABLE NAME WHERE  BINARY name='Clip';

3 设置字符集:

utf8_general_ci --不区分大小写

utf8_bin--区分大小写

二、 MySQL在windows下是不区分大小写的,将script文件导入MySQL后表名也会自动转化为小写,结果再 想要将数据库导出放到linux服务器中使用时就出错了。因为在linux下表名区分大小写而找不到表,查了很多都是说在linux下更改MySQL的设置使其也不区分大小写,但是有没有办法反过来让windows 下大小写敏感呢。其实方法是一样的,相应的更改windows中MySQL的设置就行了。

具体操作:

在MySQL的配置文件my.ini中增加一行:

lower_case_table_names = 0

其中 0:区分大小写,1:不区分大小写

MySQL在Linux下数据库名、表名、列名、别名大小写规则是这样的:

      1、数据库名与表名是严格区分大小写的;

      2、表的别名是严格区分大小写的;

      3、列名与列的别名在所有的情况下均是忽略大小写的;

      4、变量名也是严格区分大小写的;    MySQL在Windows下都不区分大小写

以上就是本文的全部内容了,希望大家能够喜欢。

(0)

相关推荐

  • 使MySQL查询区分大小写的实现方法

    1.一种方法是可以设置表或行的collation,使其为binary或case sensitive.在MySQL中,对于Column Collate其约定的命名方法如下: *_bin: 表示的是binary case sensitive collation,也就是说是区分大小写的 *_cs: case sensitive collation,区分大小写 *_ci: case insensitive collation,不区分大小写 ########### # Start binary colla

  • MySQL中查询的有关英文字母大小写问题的分析

    mysql数据库在做查询时候,有时候是英文字母大小写敏感的,有时候又不是的,主要是由mysql的字符校验规则的设置决定的,通常默认是不支持的大小写字母敏感的.  1. 什么是字符集和校验规则? 字符集是一套符号和编码.校对规则是在字符集内用于比较字符的一套规则.任何一个给定的字符集至少有一个校对规则,它可能有几个校对规则.要想列出一个字符集的校对规则,使用SHOW COLLATION语句. 校对规则一般有这些特征: 两个不同的字符集不能有相同的校对规则.     每个字符集有一个默认校对规则.例

  • MySQL表名不区分大小写的设置方法

    原来Linux下的MySQL默认是区分表名大小写的,通过如下设置,可以让MySQL不区分表名大小写:1.用root登录,修改 /etc/my.cnf:2.在[mysqld]节点下,加入一行: lower_case_table_names=13.重启MySQL即可: 其中 lower_case_table_names=1 参数缺省地在 Windows 中这个选项为 1 ,在 Unix 中为 0,因此在window中不会遇到的问题,一旦一直到linux就会出问题的原因(尤其在mysql对表起名时是无

  • 教你如何在windows与linux系统中设置MySQL数据库名、表名大小写敏感

    在 MySQL 中,数据库和表其实就是数据目录下的目录和文. 因而,操作系统的敏感性决定数据库和表命名的大小写敏感.这就意味着数据库和表名在 Windows 中是大小写不敏感的,而在大多数类型的 Unix/Linux 系统中是大小写敏感的. MySQL大小写敏感可以通过配置文件的lower_case_table_names参数来控制. WINDOWS: 编辑MySQL安装目录下的my.ini 文件,在[mysqld]节下 添加 lower_case_table_names=0 (备注:为0时大小

  • 详解MySQL查询时区分字符串中字母大小写的方法

    如果你在mysql有唯一约束的列上插入两行值'A'和'a',Mysql会认为它是相同的,而在oracle中就不会.就是mysql默认的字段值不区分大小写?这点是比较令人头痛的事.直接使用客户端用sql查询数据库. 发现的确是大小不敏感 . 通过查询资料发现需要设置collate(校对) . collate规则: *_bin: 表示的是binary case sensitive collation,也就是说是区分大小写的 *_cs: case sensitive collation,区分大小写 *

  • MYSQL的binary解决mysql数据大小写敏感问题的方法

    复制代码 代码如下: mysql> select binary 'ABCD'='abcd' COM1, 'ABCD'='abcd' COM2;+--------+-----------+| COM1 | COM2 |+--------+-----------+|      0     |      1      |+---------+-----------+1 row in set (0.00 sec) (仅仅有些而已!4.*以前)因为有的MySQL特别是4.*以前的对于中文检索会有不准确的问

  • MySql查询不区分大小写解决方案(两种)

    当我们输入不管大小写都能查询到数据,例如:输入 aaa 或者aaA ,AAA都能查询同样的结果,说明查询条件对大小写不敏感. 解决方案一: 于是怀疑Mysql的问题.做个实验:直接使用客户端用sql查询数据库. 发现的确是大小不敏感 . 通过查询资料发现需要设置collate(校对) . collate规则: *_bin: 表示的是binary case sensitive collation,也就是说是区分大小写的  *_cs: case sensitive collation,区分大小写  

  • Mysql中大小写敏感问题导致的MySql Error 1146 Tabel doen’t exist错误

    MySql Error 1146 Tabel doen't exist,一般情况下是表不存在,或者表名写错了.权限问题. 今天遇到了这个问题,仔细核对几遍后,确认无误,又在phpMyAdmin里尝试select,可以查询出数据.又核对权限,确认该mysql用户具有所有权限.那这个错误是怎么回事呢?查询了一些资料后,发现如果mysql引擎不对可能会造成真实存在的表却无法访问,但是发现引擎都是myisam. 这下犯愁了,错误出在哪里呢?又找了半天,仍然无果.无辜的看着这段报错代码,发呆了半天,突然发

  • MySQL修改配置 区分大小写

    修改MySql Server安装目录下的 my.ini 文件,在mysqld节下加入下面一行 set-variable=lower_case_table_names=0 (0:大小写敏感:1:大小写不敏感)最后重启一下MySql服务即可. 希望能帮助需要的朋友.

  • Mysql数据库名和表名在不同系统下的大小写敏感问题

    这就意味着数据库和表名在 Windows 中是大小写不敏感的,而在大多数类型的 Unix 系统中是大小写敏感的.一个特例是 Mac OS X,当缺省的 HFS+ 文件系统使用时.然而 Mac OS X 还支持 UFS 卷,那些在 Mac OS X 是大小写敏感的就如他们在任一 Unix 上一样.查看章节 1.8.3 MySQL 对 ANSI SQL92 的扩展. 注意:尽管在 Windows 中数据库与表名是忽略大小写的,你不应该在同一个查询中使用不同的大小写来引用一个给定的数据库和表.下面的查

随机推荐