2011-06-21 17 views
0

照合と文字セットを変更できないデータベースとのインタフェースが必要です。 しかし、私はそれからいくつかのバイナリデータを選び、それをUTF8であるかのように解釈し、UPPERを実行したいと思います(バイナリでUPPER()を実行するだけで元の値を返します)。クエリごとに異なる文字セットがあると解釈する方法はありますか?

私はこれが動作することを前提となります

SELECT UPPER(Filename.Name) COLLATE utf8_general_ci FROM Filename; 

が、それはないと十分に公平である

COLLATION 'utf8_general_ci' is not valid for CHARACTER SET 'binary' 

が、私はUTFとしてバイナリフィールドをキャストするために、いくつかの呪文を必要と文句を言い-8。 カラムに正しい文字セットが割り当てられている選択を行うにはどうすればよいですか?

SELECT UPPER(Filename.Name COLLATE utf8_general_ci) FROM Filename; 

しかし、私は私がテストするために壊れたデータベースを持っていないのでわからない:

答えて

2

よく分かりました。最新のMySQLバージョンでは、CASTを使用できます。また、古いバージョンのCONVERT(これは実際には標準SQLです)でも使用できます。

SELECT UPPER(CONVERT(BINARY(Filename.Name) USING utf8)) FROM Filename; 
0

私はあなたが探していると思います。

+1

いいえ、これもエラーです – Julik

関連する問題