mysql 怎么检查大小写敏感

mysql 怎么检查大小写敏感,第1张

1、linux下mysql安装完后是默认:区分表名的大小写,不区分列名的大小写;

2、用root帐号登录后,在/etc/my.cnf 中的[mysqld]后添加添加lower_case_table_names=1,重启MYSQL服务,这时已设置成功:不区分表名的大小写;

lower_case_table_names参数详解:

lower_case_table_names = 0

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

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

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

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

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

4、变量名也是严格区分大小写的;

MySQL在Windows下都不区分大小写。

3、如果想在查询时区分字段值的大小写,则:字段值需要设置BINARY属性,设置的方法有多种:

A、创建时设置:

CREATE TABLE T(

A VARCHAR(10) BINARY

)

B、使用alter修改:

ALTER TABLE `tablename` MODIFY COLUMN `cloname` VARCHAR(45) BINARY

C、mysql table editor中直接勾选BINARY项。

1.问题描述

mysql版本:mariadb 10.1.16,采用utf8-ci,不区分大小写的排序规则。

开发人员反应业务要求要区分大小写,就是说当输入小写条件时,只能返回小写条件对应的数据,不能返回大写。

[email protected]:3306mdls01:58:57>SELECT

->cabinet_no

->FROM

->go_task_ycon_refrence gtyr

->WHERE

->1 = 1

->AND cabinet_no = 'abcd4499503'

->ORDER BY

->1 ASC

+-------------+

| cabinet_no |

+-------------+

| ABCD4499503 |

+-------------+

1 row in set (0.00 sec)

2.问题解决

在条件字段后面加COLLATE utf8_bin ,或在表级或字段级指定COLLATE utf8_bin

[email protected]:3306mdls02:08:08>SELECT

->cabinet_no

->FROM

->gtyr

->WHERE

->1 = 1

->AND cabinet_no COLLATE utf8_bin = 'ABCDU4499503'

->ORDER BY

->1 ASC

+-------------+

| cabinet_no |

+-------------+

| ABCD4499503 |

+-------------+

1 row in set (0.00 sec)

[email protected]:3306mdls02:08:43>SELECT

->cabinet_no

->FROM

->gtyr

->WHERE

->1 = 1

->AND cabinet_no COLLATE utf8_bin = 'abcd4499503'

->ORDER BY

->1 ASC

Empty set (0.00 sec)


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/7090923.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-01
下一篇 2023-04-01

发表评论

登录后才能评论

评论列表(0条)

保存