
Postgres 7.4
LANG=ja_JP.UTF-8
----------------------
いつもここではお世話になっております。
現在、日本語の並べ替えで困っています。
並べ替えたいのは「個人情報テーブル」の「ふりがな」列です。
ふりがな列には次のデータが入ります。
・ひらがな(例:あ)
・カタカナ(例:ア)
・小さいひらがな(例:ぁ)
・小さいカタカナ(例:ァ)
・半角カタカナ
(゛と゜のつくものも含みます。)
かか
カカ
ヵヵ
カカ(半角文字)
がが
ガガ
ガガ(半角文字)
ひのこ
ぴのこ
ピノコ
ピノコ(半角文字)
と並べたいものが、
select * from 個人情報テーブル order by ふりがな;
では、
カカ(半角文字)
ガガ(半角文字)
ピノコ (半角文字)
かか
がが
ひのこ
ぴのこ
カカ
ガガ
ピノコ
ヵヵ
になってしまいます。Postgresでは、このように並べることは不可能なのでしょうか?
ちなみに、並べ替え結果として、
あ、ぁ、ア、ァ、ア(半角文字)
の表示順はどうなっても構いません。
ただ
「あ」で
あ
ぁ
ア
ァ
ア(半角文字)
「か」で
か
カ
ヵ
カ(半角文字)
ガ
ガ(半角文字)
を並べきりたいのです・・・・上の様に
「カカ(半角文字)」のあと
「ピノコ(半角文字)」がでてきて、そのあとに
「かか」がきて・・・またそのあと
「ひのこ」がでて・・・というようにしたくないので・・
「カカ(半角文字)」
「かか」
「ひのこ」
「ピノコ(半角文字)」
というように、同じ発音のものはどんな文字であろうと(かな・カナ・小さい・半角)続けて表示させたいのです・・・(;;)
説明が下手ですみません。。
どなたか解決策がありましたら、よろしくおねがいいたします。
No.2ベストアンサー
- 回答日時:
VBAで作成した清音変換プログラムを載せて起きます。
ExcelなりAccessにご自分で展開して使用してください。
' 清音処理
' prstrKanaSimei : 入力したカナ氏名
' 戻り値 : 清音化したカナ氏名
Public Function fncSeionConv(prstrKanaSimei As String) As String
Dim lstrRet As String
Dim lstrKanaSimei As String
Dim lintLength As Integer
Dim lintIdx As Integer
lstrKanaSimei = prstrKanaSimei
If lstrKanaSimei = "" Then
lstrRet = "*"
Else
lstrKanaSimei = Replace(lstrKanaSimei, "ヂ", "シ")
lstrKanaSimei = Replace(lstrKanaSimei, "ヅ", "ス")
lstrKanaSimei = Replace(lstrKanaSimei, "ャ", "ヤ")
lstrKanaSimei = Replace(lstrKanaSimei, "ュ", "ユ")
lstrKanaSimei = Replace(lstrKanaSimei, "ョ", "ヨ")
lstrKanaSimei = Replace(lstrKanaSimei, "゛", "")
lstrKanaSimei = Replace(lstrKanaSimei, "゜", "")
lintLength = Len(lstrKanaSimei)
lstrRet = lstrKanaSimei
For lintIdx = 2 To lintLength
If Mid(lstrKanaSimei, lintIdx, 1) = "ウ" Then
If Mid(lstrKanaSimei, lintIdx - 1, 1) = "オ" Or _
Mid(lstrKanaSimei, lintIdx - 1, 1) = "コ" Or _
Mid(lstrKanaSimei, lintIdx - 1, 1) = "ソ" Or _
Mid(lstrKanaSimei, lintIdx - 1, 1) = "ト" Or _
Mid(lstrKanaSimei, lintIdx - 1, 1) = "ノ" Or _
Mid(lstrKanaSimei, lintIdx - 1, 1) = "ホ" Or _
Mid(lstrKanaSimei, lintIdx - 1, 1) = "モ" Or _
Mid(lstrKanaSimei, lintIdx - 1, 1) = "ヨ" Or _
Mid(lstrKanaSimei, lintIdx - 1, 1) = "ロ" Then
Mid(lstrRet, lintIdx, 1) = "オ"
End If
End If
Next lintIdx
End If
fncSeionConv = lstrRet
End Function
すばやいご回答、ありがとうございました。
なるほど、Postgresでは無理なのですか・・・
PrintScreeさんのおっしゃる方法でやってみようと思います!
ありがとうございました(^^)
No.1
- 回答日時:
カナのソートでお望みの事をやりたい場合、現状のデータ内容では無理です。
カナでソートさせたい場合、清音処理を行った項目を別途作る必要があります。
清音処理とは、「ぁぃぅぇぉ」は全て「あいうえお」に変換し、濁音や半濁音の「ぱば」は「はは」にします。
このように清音処理をした結果に対してソートを行えばお望みの結果になるはずです。
その為にはデータメンテナンスが必須ですね。
私はExcelやAccessを使用して清音処理プログラムを作り「清音カナ」を作りました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Windows10でQuickTimeがインス...
-
自治会総会の成立要件について
-
三段論法を真理値表で証明する
-
Postagre SQL エラー
-
PostgresqlをインストールするP...
-
plgファイルの開き方
-
postgresqlのtableのカラムの型...
-
php、postgresqlを使ってwebア...
-
sqlの中で、 例えば条件句で AN...
-
tesuto 01
-
python3.12のインストール方法
-
Pythonで2つのデータ(キー無し...
-
数値が定期的にあらわれる文字...
-
終端クォート ' が必要です と...
-
PostgressからMySQL(MariaDB)...
-
【PostgreSQL】行の値の並びを...
-
列が存在しないと言われる
-
PostgreSQL14.6のSSL対応について
-
ポストグレにあるExcelファイル...
-
PostgreSQL レコードからアイテ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PostgreSQLのtimestamp型で時間...
-
Access にて "mm:ss.0" 形式の ...
-
予約システムでの時間の設計に...
-
該当レコードなしでエラーを発...
-
グループ単位での表示?
-
ExcelのDMAX関数について
-
NASAで働くにはどうしたらいい...
-
GROUP BYを使って書けますでし...
-
(SQL)かな・カナデータの並べ...
-
Excelの外部参照と書式設定につ...
-
英単語の意味
-
【SQL】他テーブルに含まれる値...
-
フラグをたてるってどういうこ...
-
SELECT INTOで一度に複数の変数...
-
sqlに記述できない文字
-
SQLサーバに対するSQL文で抽出...
-
UPDATEで既存のレコードに文字...
-
エラーを起こす方法
-
truncate tableを使って複数の...
-
既存データをINSERT文にして出...
おすすめ情報