show?Variables?like?'lower_case_table%'查看lower_case_table_names的值:
專注于為中小企業(yè)提供成都做網(wǎng)站、網(wǎng)站建設服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)博樂免費做網(wǎng)站提供優(yōu)質(zhì)的服務。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上千多家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。
0代表區(qū)分,1代表不區(qū)分。
mysql?show?Variables?like?'lower_case_table%';
+------------------------+-------+
|?Variable_name??????????|?Value?|
+------------------------+-------+
|?lower_case_table_names?|?0?????|
+------------------------+-------+
1?row?in?set?(0.01?sec)
mysql
使用mysql的時候,創(chuàng)建的表明都是大寫的,但是查詢語句中表明用消息就會報錯,表不存在。
查詢后發(fā)現(xiàn)mysql默認配置是表明區(qū)分大小寫的,如果要修改成不區(qū)分大小寫,需要修改一下配置。
1.問題描述
mysql版本:mariadb 10.1.16,采用utf8-ci,不區(qū)分大小寫的排序規(guī)則。
開發(fā)人員反應業(yè)務要求要區(qū)分大小寫,就是說當輸入小寫條件時,只能返回小寫條件對應的數(shù)據(jù),不能返回大寫。
dba@192.168.19.215:3306mdls01:58:57SELECT
- 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
dba@192.168.19.215:3306mdls02:08:08SELECT
- 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)
dba@192.168.19.215:3306mdls02:08:43SELECT
- cabinet_no
- FROM
- gtyr
- WHERE
- 1 = 1
- AND cabinet_no COLLATE utf8_bin = 'abcd4499503'
- ORDER BY
- 1 ASC;
Empty set (0.00 sec)
1、linux下mysql安裝完后是默認:區(qū)分表名的大小寫,不區(qū)分列名的大小寫;
2、用root帳號登錄后,在/etc/my.cnf 中的[mysqld]后添加添加lower_case_table_names=1,重啟MYSQL服務,這時已設置成功:不區(qū)分表名的大小寫;
lower_case_table_names參數(shù)詳解:
lower_case_table_names = 0
其中 0:區(qū)分大小寫,1:不區(qū)分大小寫
MySQL在Linux下數(shù)據(jù)庫名、表名、列名、別名大小寫規(guī)則是這樣的:
1、數(shù)據(jù)庫名與表名是嚴格區(qū)分大小寫的;
2、表的別名是嚴格區(qū)分大小寫的;
3、列名與列的別名在所有的情況下均是忽略大小寫的;
4、變量名也是嚴格區(qū)分大小寫的;
MySQL在Windows下都不區(qū)分大小寫。
3、如果想在查詢時區(qū)分字段值的大小寫,則:字段值需要設置BINARY屬性,設置的方法有多種:
A、創(chuàng)建時設置:
CREATE TABLE T(
A VARCHAR(10) BINARY
);
B、使用alter修改:
ALTER TABLE `tablename` MODIFY COLUMN `cloname` VARCHAR(45) BINARY;
C、mysql table editor中直接勾選BINARY項。
具體操作如下:
一、linux中mysql大小寫詳情:
1、數(shù)據(jù)庫名嚴格區(qū)分大小寫
2、表名嚴格區(qū)分大小寫的
3、表的別名嚴格區(qū)分大小寫
4、變量名嚴格區(qū)分大小寫
5、列名在所有的情況下均忽略大小寫
6、列的別名在所有的情況下均忽略大小寫
二、設置mysql表名不區(qū)分大小寫
1、切換到root用戶
$
su
-
root
2、修改/etc/my.cof配置文件,
#
sed
-i
'/\[mysqld\]/a\lower_case_table_names=1'
/etc/my.cnf
lower_case_table_names參數(shù)詳解:
0:區(qū)分大小寫
1:不區(qū)分大小寫
3、重啟mysql
#
service
mysqld
restart
select * from abc whre id="a" 與
select * from abc whre id="A" 查詢出的結(jié)果是不同的
對單個字段設置的方式就不用說了,希望得到是對mysql默認的設置或是對整個庫的設置
是否區(qū)分大小寫和校對規(guī)則有關(guān),默認設的規(guī)則是大小寫不敏感的。
show create table如果看到collate是ci結(jié)尾,那么就是不區(qū)別的,如果cs或bin結(jié)尾,就是區(qū)別的。
如果建表的時候選擇的是區(qū)別大小寫的規(guī)則而查詢的時候又暫時不想?yún)^(qū)別,
可以用類似
WHERE column_name COLLATE latin1_general_ci = 'xxx'
的寫法改變查詢使用的校對規(guī)則
網(wǎng)頁名稱:mysql大小寫怎么看 mysql怎么區(qū)分大小寫
文章路徑:http://www.rwnh.cn/article36/doohepg.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、定制網(wǎng)站、軟件開發(fā)、做網(wǎng)站、建站公司、營銷型網(wǎng)站建設
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)