データベースに登録されている内容を固定長のファイルに出力する(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」になります。)

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

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

関連記事

keybord_black

SQLで大文字、小文字変換を行う

SQLで大文字⇔子文字変換を行う SQLで大文字⇔小文字変換を行うには「UPPER関数」と「LOW

記事を読む

no-img

SQLServer上にあるテーブルの更新日時を取得する。

テーブルの更新日時を取得 SQLServer上にあるストアドプロシージャーの更新日時を取得するで

記事を読む

SQLServer

GROUP BYとHAVINGを使ってデータの重複を探しだすSQL

GROUP BYとHAVINGで重複を探す SQLでGROUP BYとHAVINGを使ってデー

記事を読む

no-img

DEFAULT制約付きのカラムの属性を変更する

DEFAULT制約付きのカラムの属性を変更する SQLServerでDEFAULT制約付きのカラム

記事を読む

no-img

日付の重複をSQLで検索する

SQLを使って期間の重複を見つけ出す SQLを使って、開始日付、終了日付を持っているレコードの

記事を読む

SQLServer

SQLServerで引数の順序を考慮せずに呼び出せるストアドプロシジャを作る

引数の順序を考慮せずに呼び出せるストアドプロシジャ ストアドプロシジャを呼び出す際に、引数が多いも

記事を読む

SQLサーバ

DATETIMEデータ型のミリ秒丸め現象

DATETIMEデータ型のミリ秒には丸めがあります SQLServerのDATETIMEデータ

記事を読む

no-img

SQLServer上にあるストアドプロシージャーの更新日時を取得する。

ストアドプロシージャーの更新日時を取得する ここ数日間で変更されたSQLServer上にあるストア

記事を読む

no-img

ALTER TABLEのALTER COLUMNで「列 ‘xxxxx’ に依存しています」とエラーになる

ALTER COLUMNで「列 'xxxxx' に依存しています」とエラー SQLServerでカ

記事を読む

no-img

SQLServerで省略可能な引数を持ったストアドプロシージャを作る

SQLServerで省略可能な引数を持ったストアドプロシージャーを作ります。 省略可能にするに

記事を読む

no-img
SQLServerでホスト名を取得する

SQLServerが動作しているホスト(サーバ)名取得 SQLSer

no-img
「INNER JOIN」「LEFT OUTER JOIN」「RIGHT OUTER JOIN」「FULL OUTER JOIN」についてまとめ

SQLで良く使うJOINについて SQLでよく使う「INNER

no-img
SQLServerでSQLを使ってテーブルのカラム名(項目名)を取得する

SQLでテーブルのカラム名(項目名)を取得 Oracleでは

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

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

keybord_black
SQLで大文字、小文字変換を行う

SQLで大文字⇔子文字変換を行う SQLで大文字⇔小文字変換を行うに

→もっと見る



PAGE TOP ↑