5

質問: MySQL、PHP、または一般的にLinuxとWindows OSで並べ替える場合、文字の優先順位はどこにありますか?

たとえば、MySQLで文字列に対して昇順の並べ替えを実行する場合、 aがbの前来ることは誰もが知っています。しかし、他のキャラクターはどうですか?ドル記号$はアスタリスク*の前にありますか?感嘆符の前にスペースがありますか?等...

ソート順は何によって決まりますか?基になるASCII/UTF-8値を使用していますか?テクノロジーによって違いますか?

考慮すべきテクノロジー:

  1. データベース-MySQL/SQL / SQLite / Oracle / etc
  2. プログラミング言語(文字列ソート関数用)-PHP / Javascript / ASP.NET / Visual C#/ Python / Ruby / Objective C
  3. OS(つまり、ファイル名でファイルを並べ替える)-Windows / Linux / MacOS / iOS / Android
4

4 に答える 4

1

文字は、符号なし整数型から特定のグリフへのマッピングとして表されます。特定のマッピングは、文字セットによって定義されます。

したがって、文字を比較する場合、実際には特定の文字セットで文字を表す整数を比較しています。

Stringたとえば、Javaは Unicode 表現に基づいて を比較します。ソース

于 2012-06-07T22:27:58.940 に答える
1

データベース用語では、これは照合シーケンスと呼ばれ、ほとんどの文字セットにはデフォルトがあります。Unicode を使用している場合は、こちらを参照してください: http://www.unicode.org/reports/tr10/tr10-24.html

于 2012-06-07T22:28:57.877 に答える
1

他の言語を考えると、さらに興味深いものになります。

Ä と ö は、オランダ語とドイツ語ではアクセント付きの文字ですが、スウェーデン語のアルファベットでは「実際の」文字です (Z の後、それぞれ A と B/O と L の間ではありません)。

于 2012-06-07T22:29:43.290 に答える
1
  1. データベース - 照合 (照合が設定されていない場合は整数文字値)
  2. プログラミング言語 - ロケールまたは整数文字値またはユーザー定義関数 (通常、デフォルトで 3 つのオプションすべてが使用可能です)
  3. OS - ロケール
于 2012-06-07T22:36:35.390 に答える