
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で質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Accessのテキストボックスの入力文字制限 1 2023/01/18 20:43
- Excel(エクセル) capeofdragonと申します Excel2016を使っておりまして 半角又は全角の任意文字列が 2 2022/10/31 13:51
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- その他(Microsoft Office) WordやExcelで英数字のみ半角または全角にしたい 6 2022/08/03 08:18
- Excel(エクセル) エクセルの数式で教えてください。 3 2022/10/25 10:52
- マウス・キーボード macからリモートデスクトップでwindowsに接続した際のキーボード配列 3 2023/07/10 08:40
- Visual Basic(VBA) エクセルの数式で教えてください。 1 2023/07/31 15:49
- Visual Basic(VBA) VBA 「,」・空白・カタカナ等の複数条件のマクロ 2 2023/08/23 11:57
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- その他(プログラミング・Web制作) 2つのテキストファイルを比べて文字列を特定する方法を教えて下さい 5 2022/05/01 15:22
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PostgreSQLのtimestamp型で時間...
-
hp z200 sffというパソコンな...
-
【SQL】他テーブルに含まれる値...
-
フラグをたてるってどういうこ...
-
SELECT INTOで一度に複数の変数...
-
sqlに記述できない文字
-
オラクルのUPDATEで複数テーブル
-
UPDATEで既存のレコードに文字...
-
truncate tableを使って複数の...
-
chr(13) と char(13) の違いっ...
-
JDBCを使ってdate型へのINSERT...
-
SQLをExcelで書いている人を良...
-
エラーを起こす方法
-
SELECT文の結果をDEFINEの値と...
-
VBAでの行数を揃える方法
-
SQLで、Join句で結合したテ...
-
既存データをINSERT文にして出...
-
テーブル定義書(Oracle) 【IX】...
-
UNION ALLでつなげた複数ビュー...
-
ACCESS VBAでSeekメソッドの処...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PostgreSQLのtimestamp型で時間...
-
Access にて "mm:ss.0" 形式の ...
-
予約システムでの時間の設計に...
-
(SQL)かな・カナデータの並べ...
-
SELECT の仕方 (今月のデー...
-
ご覧ください、ご参照ください...
-
MySQLで期間のUNIQUEってできま...
-
SQL 文 日付範囲を指定したレコ...
-
Mysqlで掲載開始日と掲載終了日...
-
該当レコードなしでエラーを発...
-
重複データより一番古いデータ...
-
オラクルのnumber
-
【SQL】他テーブルに含まれる値...
-
フラグをたてるってどういうこ...
-
SELECT INTOで一度に複数の変数...
-
sqlに記述できない文字
-
UPDATEで既存のレコードに文字...
-
truncate tableを使って複数の...
-
エラーを起こす方法
-
既存データをINSERT文にして出...
おすすめ情報