データベースに登録されている内容を固定長のファイルに出力する(1)

公開日: : 最終更新日:2013/11/26 SQL Server , , ,

登録されている内容を固定長で出力

データベースに登録されている内容を固定長のファイルに
出力する必要があったので、面倒な編集をSQLで行って
ファイル出力処理の簡略化を行ってみます。

1.サンプルの仕様

サンプルの仕様として

  1. 都道府県名を20バイト固定で後ろ、全角スペース埋めで出力
  2. 該当件数を20バイト固定で後ろ、半角スペース埋めで出力
  3. 該当件数を20バイト固定で前、半角0埋めで出力

2.テーブルの作成

サンプルとしてデータを格納するためのテーブルを作成します。

それぞれの項目は

  • seq   レコードをユニークにするためのキー
  • name   都道府県名
  • num   該当件数

です。

3.データの作成

出力するためのデータを作成します。

内容は適当に。

4.固定長での項目取得

各項目を指定の固定長で取得します。

です。

5.表示結果

表示結果は

大阪■■■■■■■■..................1000000000000000000010
京都■■■■■■■■...................700000000000000000007
奈良■■■■■■■■...................400000000000000000004
兵庫■■■■■■■■...................600000000000000000006
和歌山■■■■■■■...................200000000000000000002
滋賀■■■■■■■■...................000000000000000000000

表示結果をわかりやすくするために全角スペースを「■」、半角スペースを「.」に
変更してあります。

REPLICATE()は指定された文字を、指定された回数表示する関数です。
SQLServerのTransact-SQL(T-SQL)関数なのでOracleやPostgreSQL、MySQLでは
関数を変える必要があります。(環境がないので調べてません。)

内容としてはDATALENGTH()関数で取得した値のバイト数(長さ)を求め
REPLICATE()を固定長に不足分のバイト数分、埋めるべき文字を生成し、
元データと連結しています。

埋めるべき文字数を求めるのに

にしてあるのは全角文字、半角文字をしていされても同じ結果にするためです。
(全角文字の場合は「÷2」、半角文字の場合は「÷1」になります。)

これでデータベースから取得した結果は固定長になるので、
あとはこの結果をファイルに出力すれば良いだけです。

スポンサーリンク
スポンサーリンク
  • このエントリーをはてなブックマークに追加
  • 13 follow us in feedly

関連記事

SQLServer

指定した値と同じ場合はNULLを返すNULLIF関数

使いどころがいまいち不明な「NULLIF()」 SQLServerには使いどころがいまいち不明な関

記事を読む

SQLで西暦から和暦変換を行う

SQLを使って西暦から和暦変換を行う SQLServerには西暦和暦変換関数が無いようなので、

記事を読む

SQLServerではTRIM関数がありません

SQLServerでは空白を取り除くTRIM関数がない SQLServerではOracleやMyS

記事を読む

ORDER BYでNULLのカラムを最後に表示

ORDER BYでNULLのカラムを最後に持ってくる SQLで何も考慮せずに「ORDER BY」す

記事を読む

テーブルから列を削除する「ALTER TABLE テーブル名 DROP COLUMN 削除する列名」

既存のテーブルから指定した列を削除する 既存のテーブルで不要になった列を削除する方法です。

記事を読む

SQLServerでsp_renameを使ってテーブルの列名を変更する

SQLServerで列名を変更するには sp_renameを使って列名を変更 SQLServ

記事を読む

sp_pkeys – SQL Serverでテーブルのプライマリキーを取得する

sp_pkeysを使ってSQL Serverでテーブルのプライマリキーを取得します。

記事を読む

呼び出したストアドプロシジャーの戻り値を使用する

呼び出したストアドプロシジャーの戻り値を使用する 処理の構成上、ストアドプロシジャーから他のストア

記事を読む

SQLServerのエラーコード一覧

SQLServerで発生するエラーコードとその内容を表にしてみました。 量が多いので別のサイトに分

記事を読む

SQL Server-SQLでテーブル仕様書になるものネタを取ってみる

SQLでテーブル仕様書になるものネタを取ってみます。 これを実行すると [crayo

記事を読む

複数のストアドプロシージャ (stored procedure) でローカルテンポラリテーブルを共有する

ローカルテンポラリテーブルを共有する 先日来より悩んでいたSQL

SQL Server-ストアドプロシジャーのソースを表示する2

過去の投稿「SQL Server-ストアドプロシジャーのソースを表示す

SQL Server-テーブルのプライマリーキー(PK)を取得する

SQL ServerでSQLを使用してプライマリーキー(PK)を取得す

SQLServerのテーブルロック状態を取得するSQL

SQLServerのデッドロックを調査している中で ロックの状態を調

指定された月の日数をSQLで求める

指定された月の日数をSQLで求める SQLServerには該当月

→もっと見る



PAGE TOP ↑