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