0

私はこのようなテーブルを持っています:

id | name 
----------------
 1 | àbbot
 2 | about
 3 | zorro

次のように、大文字と小文字を区別しないコンテキストで最初の文字を選択します。

let
----------
a
z

しかし、それらのいずれも、ユニコード照合を使用すると、同じ間違った結果が得られます。

SELECT LOWER(SUBSTR(name,1,1)) AS let FROM t GROUP BY let

SELECT LOWER(SUBSTR(name,1,1)) AS let FROM t GROUP BY letter ORDER BY let ASC

SELECT * FROM
     (SELECT LOWER(SUBSTR(name,1,1)) AS let FROM t ORDER BY let DESC) AS x
GROUP BY let ORDER BY let ASC

間違った結果:

let
----------
à
z

キャストせずに順序を修正する方法はありますか?(日本語などの非ラテン語もカバーする必要があるため)。

たぶん私は古いバージョンのMySQLを持っています...あなたの環境でクエリをテストできますか?

前もって感謝します!

4

1 に答える 1

0

気にしないで、解決策を見つけた

SELECT UPPER(SUBSTR(name,1,1)) AS let FROM 
    (SELECT name FROM t ORDER BY name DESC) AS x
GROUP BY let ORDER BY let ASC
于 2012-11-15T13:14:44.560 に答える