掃二維碼與項(xiàng)目經(jīng)理溝通
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢(xún)/運(yùn)營(yíng)咨詢(xún)/技術(shù)建議/互聯(lián)網(wǎng)交流
在MySQL中,區(qū)分?jǐn)?shù)據(jù)的大小寫(xiě)主要有兩種方法:

創(chuàng)新互聯(lián)建站服務(wù)項(xiàng)目包括河津網(wǎng)站建設(shè)、河津網(wǎng)站制作、河津網(wǎng)頁(yè)制作以及河津網(wǎng)絡(luò)營(yíng)銷(xiāo)策劃等。多年來(lái),我們專(zhuān)注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,河津網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到河津省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
修改MySQL配置:
你可以在MySQL的配置文件(my.cnf或my.ini,取決于你的操作系統(tǒng)和MySQL的安裝方式)中修改[mysqld]部分的lower_case_table_names配置項(xiàng)。
如果設(shè)為0,MySQL會(huì)將所有的表名和數(shù)據(jù)庫(kù)名都轉(zhuǎn)化為大寫(xiě)。如果設(shè)為1,MySQL會(huì)將所有的表名和數(shù)據(jù)庫(kù)名都轉(zhuǎn)化為小寫(xiě)。如果設(shè)為2,MySQL會(huì)根據(jù)創(chuàng)建時(shí)的大小寫(xiě)來(lái)保留表名和數(shù)據(jù)庫(kù)名。
修改后需要重啟MySQL服務(wù)器使得設(shè)置生效。
注意:在修改這個(gè)配置項(xiàng)之前,你需要考慮你的應(yīng)用程序是否依賴(lài)于大小寫(xiě)不敏感的數(shù)據(jù)庫(kù)名或表名。如果存在這樣的情況,修改這個(gè)設(shè)置可能會(huì)導(dǎo)致問(wèn)題。2. 在查詢(xún)時(shí)使用引號(hào):
如果你想在查詢(xún)時(shí)區(qū)分大小寫(xiě),可以在字段名或表名周?chē)褂靡?hào)。例如:
sqlSELECT `MyField` FROM `MyTable`;
要讓MySQL數(shù)據(jù)庫(kù)區(qū)分?jǐn)?shù)據(jù)的大小寫(xiě),需要在創(chuàng)建數(shù)據(jù)庫(kù)時(shí)設(shè)置對(duì)應(yīng)的字符集和校對(duì)規(guī)則。首先,選擇一個(gè)區(qū)分大小寫(xiě)的字符集,如utf8_bin或utf8mb4_bin。然后,在創(chuàng)建數(shù)據(jù)庫(kù)時(shí),使用該字符集,并指定對(duì)應(yīng)的校對(duì)規(guī)則,如utf8_bin或utf8mb4_bin。這樣,數(shù)據(jù)庫(kù)將會(huì)區(qū)分?jǐn)?shù)據(jù)的大小寫(xiě)。請(qǐng)注意,修改字符集和校對(duì)規(guī)則可能會(huì)影響現(xiàn)有數(shù)據(jù),因此請(qǐng)謹(jǐn)慎操作,并備份數(shù)據(jù)以防萬(wàn)一。
平時(shí)很少會(huì)考慮數(shù)據(jù)存儲(chǔ)需要明確字符串類(lèi)型字段的大小寫(xiě),MySQL默認(rèn)的查詢(xún)也不區(qū)分大小寫(xiě)。但作為用戶信息,一旦用戶名重復(fù),又會(huì)浪費(fèi)很多資源。再者,李逵、李鬼的多起來(lái),偵辨起來(lái)很困難。要做到這一點(diǎn),要么在建表時(shí),明確大小寫(xiě)敏感(字段明確大小寫(xiě)敏感)。如果通盤(pán)數(shù)據(jù)庫(kù)所有字段都需要大小寫(xiě)敏感,不如在字符集設(shè)置時(shí)做好調(diào)整。不過(guò),通常不建議這么做。
如果跟我一樣,數(shù)據(jù)庫(kù)已經(jīng)在線上跑了,一個(gè)表上百萬(wàn)條數(shù)據(jù),做字段類(lèi)型變更有可能導(dǎo)致數(shù)據(jù)庫(kù)宕機(jī)。那么好吧,在查詢(xún)時(shí),多加個(gè)單詞好了!-
例如,一般查詢(xún):
SELECT*FROMUWHEREnameLIKE'a%';
SELECT*FROMUWHEREnameLIKE'A%';
其結(jié)果是一樣的,為了區(qū)分'A%'和'a%',可以這么做:
SELECT*FROMUWHEREbinarynameLIKE'a%';
SELECT*FROMUWHEREbinarynameLIKE'A%';
僅僅多了一個(gè)binary,就可以得到不同的結(jié)果!
當(dāng)然,如果需要建表時(shí)強(qiáng)制區(qū)分大小寫(xiě),可以這么寫(xiě):
是否區(qū)分大小寫(xiě)是受平臺(tái)限制的,比如安裝在windows上的mysql,默認(rèn)就不區(qū)分大小寫(xiě)。但是安裝在linux上的mysql默認(rèn)是區(qū)分大小寫(xiě)的,因?yàn)閘inux這個(gè)系統(tǒng)本身就是區(qū)分大小寫(xiě)的。但是可以通過(guò)修改配置讓跑在linux上的mysql不區(qū)分大小寫(xiě):[mysqld]lower_case_table_names=1 #不區(qū)分大小寫(xiě)
在 MySQL 中,字段名可以大寫(xiě),也可以小寫(xiě)。但是,建議在編寫(xiě) SQL 代碼時(shí),統(tǒng)一使用小寫(xiě)字母來(lái)命名字段,以避免出現(xiàn)大小寫(xiě)不一致的問(wèn)題。
另外,在 MySQL 中,表名和數(shù)據(jù)庫(kù)名也是大小寫(xiě)不敏感的,但建議在編寫(xiě) SQL 代碼時(shí),統(tǒng)一使用小寫(xiě)字母來(lái)命名表和數(shù)據(jù)庫(kù),以避免出現(xiàn)混淆和錯(cuò)誤。
到此,以上就是小編對(duì)于sql中大小寫(xiě)轉(zhuǎn)換的問(wèn)題就介紹到這了,希望這4點(diǎn)解答對(duì)大家有用。

我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢(xún)/運(yùn)營(yíng)咨詢(xún)/技術(shù)建議/互聯(lián)網(wǎng)交流