MYSQL字串強轉的方法示例
阿新 • • 發佈:2020-12-10
前言
由於兩個表同一欄位型別不一樣,甚至是編碼型別不一樣也會導致查詢不走索引,速度會很慢。
強轉
直接舉例說明:
A 表id是int 型別 B表id是 char 型別
如果要轉為int 則是signed
如果要轉為char 則是char
注意:需轉換的型別必須是left join 後表的欄位,否則不走索引
因為聯表字段型別不一致,所以不走索引
select t.* from A tleft join B t1 on t.id = t1.id
第一種轉換型別
select t.* from A tleft join B t1 on t.id = cast(t1.id as signed)
第二種轉化型別
select t.* from A tleft join B t1 on t.id =convert(t1.id,signed)
a.b=f.g
但是這兩個欄位b和g屬於不同的排序規則,b是utf8_general_ci,而g是utf8_unicode_ci,他兩相等sql就會報錯,於是我請教了上級,寫法是:
CONVERT (a.b USING utf8) COLLATE utf8_unicode_ci =f.g
如果這樣連表還不走索引,欄位放在查詢裡面轉型,例如:
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
到此這篇關於MYSQL字串強轉的文章就介紹到這了,更多相關MYSQL字串強轉內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!