在數(shù)據(jù)庫操作中,經(jīng)常需要對某些字段進(jìn)行解碼,例如在查詢結(jié)果中,需要將某個字段的編碼解析成可讀的字符串,這時候就可以使用decode函數(shù)。
SELECT decode('Y2F0ZWdvcnk=','base64') as company;
上述代碼將'Y2F0ZWdvcnk='這個base64編碼的字符串解碼成了company字段。
然而,在MySQL中,并沒有decode函數(shù)可用,那應(yīng)該怎么辦呢?這時候可以使用MySQL的內(nèi)置函數(shù)UNHEX和CONVERT函數(shù)來替代decode函數(shù)。
SELECT CONVERT(UNHEX('63617465676f7279') USING utf8) as company;
這段代碼的含義是先將16進(jìn)制編碼的字符串'63617465676f7279'轉(zhuǎn)換成二進(jìn)制,并通過UNHEX函數(shù)將二進(jìn)制轉(zhuǎn)換成字符串,最后通過CONVERT函數(shù)將字符串轉(zhuǎn)換成utf8編碼的company字段。
通過這種方式,我們可以替換掉decode函數(shù)在MySQL中缺失的問題,實現(xiàn)同樣的功能。