前提・実現したいこと
Linux上のPostgreSQLにて、汎用機で出力したファイルと同じ結果を得ようとしています。
1 汎用機側:
受信ファイルを開いてKEY項目でSORTしてレコードを並び替える→ファイル整形して保存
2 Linux側:
受信ファイルを開いて、PostgreSQL上のDBにデータ保存→KEY項目でSORT(ORDER BY)して
結果をファイル出力して保存
発生している問題・エラーメッセージ
上記1と2で同じSORT指定でも生成されたファイルレコードの並び順が異なってしまします。
該当のソースコード
以下のDB対して、項目A~項目Gの順に昇順でSORTします。 項目A 項目B 項目C 項目D 項目E 項目F 項目G 126144859 20180427 20180428 20180427 999 99999 GR-101-1 126144859 20180427 20180428 20180427 999 99999 30013530 126311559 20180427 20180428 20180427 999 99999 DS-641 126311559 20180427 20180428 20180427 999 99999 GR-129 126311559 20180427 20180428 20180427 999 99999 GR-210 126311559 20180427 20180428 20180427 999 99999 10121-5 126411009 20180427 20180428 20180427 999 99999 Z-K-0000 126691015 20180427 20180428 20180427 999 99999 GR-100 127650215 20180427 20180428 20180427 999 99999 000001-A 127660211 20180427 20180428 20180427 999 99999 GR-110 127660211 20180427 20180428 20180427 999 99999 Z-K-0002 127660211 20180427 20180428 20180427 999 99999 000001-A 127729911 20180427 20180428 20180427 999 99999 DS-634-1 127729911 20180427 20180428 20180427 999 99999 DS-650 127729911 20180427 20180428 20180427 999 99999 DS-658 127729911 20180427 20180428 20180427 999 99999 GR-106 127729911 20180427 20180428 20180427 999 99999 GR-110 127729911 20180427 20180428 20180427 999 99999 GR-126 127729911 20180427 20180428 20180427 999 99999 127729911 20180427 20180428 20180427 999 99999 GR-129 127729911 20180427 20180428 20180427 999 99999 GR-500 127729911 20180427 20180428 20180427 999 99999 MSN-007 127729911 20180427 20180428 20180427 999 99999 TFS-160 127729911 20180427 20180428 20180427 999 99999 Z-K-0016 127729911 20180427 20180428 20180427 999 99999 Z-K-0027 127729911 20180427 20180428 20180427 999 99999 000001-003 127729911 20180427 20180428 20180427 999 99999 3001400002 127729911 20180427 20180428 20180427 999 99999 3001400003
試したこと
汎用機の結果とLinux側では、文字コードがEBCDICとASCIIで異なる事が原因という情報を得て
以下のように色々工夫しているのですが、完全には一致しません。
補足情報(FW/ツールのバージョンなど)
SELECT 項目A,項目B,項目C,項目D,項目E,項目F,項目G FROM テーブル ORDER BY 項目A,項目B,項目C,項目D, (項目E IS NULL) DESC, SUBSTRING(項目E FROM '^[A-Z]+'), SUBSTRING(項目E FROM '[A-Z]'), SUBSTRING(項目E FROM '[0-9]'), SUBSTRING(項目E FROM '[0-9]+$'), (項目F IS NULL) DESC, SUBSTRING(項目F FROM '^[A-Z]+'), SUBSTRING(項目F FROM '[A-Z]'), SUBSTRING(項目F FROM '[0-9]'), SUBSTRING(項目F FROM '[0-9]+$'), (項目G IS NULL) DESC, SUBSTRING(項目G FROM '^[A-Z]+'), SUBSTRING(項目G FROM '[A-Z]'), SUBSTRING(項目G FROM '[0-9]'), SUBSTRING(項目G FROM '[0-9]+$')
回答3件
あなたの回答
tips
プレビュー