MYSQL字符串強(qiáng)轉(zhuǎn)的方法示例
由于兩個(gè)表同一字段類(lèi)型不一樣,甚至是編碼類(lèi)型不一樣也會(huì)導(dǎo)致查詢不走索引,速度會(huì)很慢。
強(qiáng)轉(zhuǎn)
直接舉例說(shuō)明:
A 表id是int 類(lèi)型 B表id是 char 類(lèi)型
如果要轉(zhuǎn)為int 則是signed
如果要轉(zhuǎn)為char 則是char
注意:需轉(zhuǎn)換的類(lèi)型必須是left join 后表的字段,否則不走索引
因?yàn)槁?lián)表字段類(lèi)型不一致,所以不走索引
select t.* from A tleft join B t1 on t.id = t1.id
第一種轉(zhuǎn)換類(lèi)型
select t.* from A tleft join B t1 on t.id = cast(t1.id as signed)
第二種轉(zhuǎn)化類(lèi)型
select t.* from A tleft join B t1 on t.id =convert(t1.id,signed)
a.b=f.g
但是這兩個(gè)字段b和g屬于不同的排序規(guī)則,b是utf8_general_ci,而g是utf8_unicode_ci,他兩相等sql就會(huì)報(bào)錯(cuò),于是我請(qǐng)教了上級(jí),寫(xiě)法是:
CONVERT (a.b USING utf8) COLLATE utf8_unicode_ci =f.g
如果這樣連表還不走索引,字段放在查詢里面轉(zhuǎn)型,例如:
select a.* from a left join (select b.*,CONVERT (a.b USING utf8) COLLATE utf8_unicode_ci =f.gfrom b) a on a.b = f.g
CONVERT(user_id USING utf8) COLLATE utf8_general_ci as user_id
到此這篇關(guān)于MYSQL字符串強(qiáng)轉(zhuǎn)的文章就介紹到這了,更多相關(guān)MYSQL字符串強(qiáng)轉(zhuǎn)內(nèi)容請(qǐng)搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!
版權(quán)聲明:本站文章來(lái)源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來(lái)源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來(lái)源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來(lái),僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。
關(guān)注官方微信