- ベストアンサー
(SQL)かな・カナデータの並べ替え
- Postgresでは、あるカラムのふりがなデータを並び替えることができない問題があります。
- データはひらがな、カタカナ、小さいひらがな、小さいカタカナ、半角カタカナなどが含まれており、同じ発音のものをまとめて表示したいです。
- 現在、カラムのデータを正しく並び替える方法は見つかっていません。
- みんなの回答 (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
その他の回答 (1)
- PrintScree
- ベストアンサー率25% (538/2091)
カナのソートでお望みの事をやりたい場合、現状のデータ内容では無理です。 カナでソートさせたい場合、清音処理を行った項目を別途作る必要があります。 清音処理とは、「ぁぃぅぇぉ」は全て「あいうえお」に変換し、濁音や半濁音の「ぱば」は「はは」にします。 このように清音処理をした結果に対してソートを行えばお望みの結果になるはずです。 その為にはデータメンテナンスが必須ですね。 私はExcelやAccessを使用して清音処理プログラムを作り「清音カナ」を作りました。
お礼
すばやいご回答、ありがとうございました。 なるほど、Postgresでは無理なのですか・・・ PrintScreeさんのおっしゃる方法でやってみようと思います! ありがとうございました(^^)