有時我會使用varbinary
而不是varchar
,尤其是當我需要在=
比較中使用尾隨空格進行計數時,並且我不想使用LIKE
運算符來達到此目的。什麼是MySQL varbinary字符串解釋的默認字符集?
選擇時,我可以像這樣解碼時指定要使用的字符集:
select convert(myvarbinary using utf8) from mytable
但大多數時候,我只是select myvarbinary from mytable
和它工作得很好。
我的問題是,在後者,當我沒有指定字符集時,默認字符集是從哪裏來的?在varchar上,它實際上是設置在每個表上,甚至是每個列的基礎上,但對varbinary不是這樣。
是的,那將是一場噩夢。我不明白這是如何回答我的問題。我問,如果我從'myvarbinary'選擇時不運行'convert',那麼它使用什麼charset來渲染另外的二進制數據?我認爲這是一個會話或數據庫默認,但我不知道這一點。 –
讓我們來了解更多關於盤子的信息...... Wny你在使用'VARBINARY'嗎? 「SELECT」(或其他查詢)是什麼樣的?你在比較'VARBINARY'到什麼?如果'='(etc)的另一端也是'VARBINARY',那麼不需要「轉換」。還有一個「強制性」的問題。請參閱https://dev.mysql.com/doc/refman/5.6/en/information-functions.html(等)。 –
我將'varbinary'用於字符數據的主要原因是因爲這樣''''子句默認檢查尾部空格和區分大小寫。我也喜歡索引長度是字節的字節,而不是每個字符3個字節,就像'varchar utf8'一樣。 (我知道我可以使用'latin1',並且我承認我沒有完全理解索引長度) –