ホームページ データベース mysql チュートリアル PostgreSQL はどのようにして単語と数字が混在した文字列を人間に優しい順序で並べ替えることができるのでしょうか?

PostgreSQL はどのようにして単語と数字が混在した文字列を人間に優しい順序で並べ替えることができるのでしょうか?

Jan 07, 2025 pm 10:55 PM

How Can PostgreSQL Sort Mixed Word-and-Number Strings in a Human-Friendly Order?

PostgreSQL の英数字混在文字列の人間に優しい並べ替え

PostgreSQL で英数字が混在した文字列を人道的に並べ替えるのは、独特の課題です。理想的な並べ替え順序では、文字よりも数字が優先され、「20」の前に「3」が配置され、「10bob」の後に「fred」が配置されます。

文字列を数値コンポーネントと文字列コンポーネントに分割します

1 つの方法は、各文字列を英数字の境界でチャンクに分割することです。たとえば、「AAA2fred」は (「AAA」, 2, 「fred」) になります。この分離により、アルファベット ブロックの通常の照合規則を使用し、数値ブロックを整数として扱うことで、データ型に基づいて個別に並べ替えることができます。

regexp_matches() 関数と '(D*)(d*)' オプションを指定した 'g' モードを使用すると、各文字列のこれらのコンポーネントを抽出し、array_agg() を使用して ai 配列 (テキスト フィールドと整数フィールドの複合体) を作成できます。タイプ)。

分割データを並べ替えます

文字列を分割して複合型の配列に変換した後、これらの配列を並べ替えに使用できます。 ORDER BY 句はこの配列を利用して、文字ブロックが数字ブロック内で元の順序を維持するようにします。

完全な解決策

文字列の分割と並べ替えの手順を組み合わせると、次のクエリを使用して、望ましい人間のような並べ替えを実現できます:

SELECT data
FROM alnum
ORDER BY ARRAY(SELECT ROW(x[1], CASE x[2] WHEN '' THEN '0' ELSE x[2] END)::ai
                FROM regexp_matches(data, '(\D*)(\d*)', 'g') x)
        , data;
ログイン後にコピー

このソリューションは、各文字列内の要素数が異なる任意のデータに適しており、特定の並べ替え要件に合わせてカスタマイズできる柔軟なアプローチを提供します。

以上がPostgreSQL はどのようにして単語と数字が混在した文字列を人間に優しい順序で並べ替えることができるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

DockerでのMySQLメモリの使用を減らします DockerでのMySQLメモリの使用を減らします Mar 04, 2025 pm 03:52 PM

DockerでのMySQLメモリの使用を減らします

Alter Tableステートメントを使用してMySQLのテーブルをどのように変更しますか? Alter Tableステートメントを使用してMySQLのテーブルをどのように変更しますか? Mar 19, 2025 pm 03:51 PM

Alter Tableステートメントを使用してMySQLのテーブルをどのように変更しますか?

mysqlの問題を解決する方法共有ライブラリを開くことができません mysqlの問題を解決する方法共有ライブラリを開くことができません Mar 04, 2025 pm 04:01 PM

mysqlの問題を解決する方法共有ライブラリを開くことができません

sqliteとは何ですか?包括的な概要 sqliteとは何ですか?包括的な概要 Mar 04, 2025 pm 03:55 PM

sqliteとは何ですか?包括的な概要

Linuxでmysqlを実行します(phpmyAdminを使用してポッドマンコンテナを使用して/なし) Linuxでmysqlを実行します(phpmyAdminを使用してポッドマンコンテナを使用して/なし) Mar 04, 2025 pm 03:54 PM

Linuxでmysqlを実行します(phpmyAdminを使用してポッドマンコンテナを使用して/なし)

MACOSで複数のMySQLバージョンを実行する:ステップバイステップガイド MACOSで複数のMySQLバージョンを実行する:ステップバイステップガイド Mar 04, 2025 pm 03:49 PM

MACOSで複数のMySQLバージョンを実行する:ステップバイステップガイド

共通の脆弱性(SQLインジェクション、ブルートフォース攻撃)に対してMySQLを保護するにはどうすればよいですか? 共通の脆弱性(SQLインジェクション、ブルートフォース攻撃)に対してMySQLを保護するにはどうすればよいですか? Mar 18, 2025 pm 12:00 PM

共通の脆弱性(SQLインジェクション、ブルートフォース攻撃)に対してMySQLを保護するにはどうすればよいですか?

MySQL接続用のSSL/TLS暗号化を構成するにはどうすればよいですか? MySQL接続用のSSL/TLS暗号化を構成するにはどうすればよいですか? Mar 18, 2025 pm 12:01 PM

MySQL接続用のSSL/TLS暗号化を構成するにはどうすればよいですか?

See all articles