データベースに登録されている内容を固定長のファイルに出力する(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で作ったテンポラリテーブルが見つからず無効になってしまう

SQLServerでテンポラリテーブルを利用して処理を行う時に 「オブジェクト名 '#tmp_ta

記事を読む

CASE WHENを使ってSQLでIF文を使わずに条件を分岐する

SQLでIFを使わずに条件分岐する SQLでIFを書けばWHERE句の内容を変えて検索できますが、

記事を読む

SQLで文字列を反転させる

SQLで文字列を反転させる SQLで文字列を"012345"を後ろから並び変えて"543210"の

記事を読む

SQLで改行コードを含む項目を取得する

SQLで改行コードを含む項目を検索する Microsoft SQL Server Managemn

記事を読む

SQLで当月の第何週目の何曜日か取得する

SQLで今日は第何週、何曜日か取得する SQLServerでは関数で今日は当月の第何週目か取得する

記事を読む

データベースに登録されている内容を固定長の長さで出力する(2)

登録されている内容を固定長の長さで出力する 先日作成したデータベースに登録されている内容を固定長の

記事を読む

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

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

記事を読む

SQLで指定月のカレンダー作成

ストアドプロシージャでカレンダーを作成する SQLServerでストアドプロシージャ (store

記事を読む

SQLでランダムにユニーク(一意)な値(ID)を取得する

ランダムにユニーク(一意)な値(ID)を取得する SQLServerでテーブル内でユニークキーをラ

記事を読む

SQLを使っていろいろなやり方で年月を抜き出す

いろいろなやり方で年月を抜き出す 数値で年月を管理しているテーブルに対して年月日から 年月を抜き

記事を読む

SQLサーバ
SQLServerでROW_NUMBER()を使って連番を採番する

ROW_NUMBER()で連番を取得する SQLServerでROW

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

SQLを使って期間の重複を見つけ出す SQLを使って、開始日付、終了

SQLServerでTrue,FalseのようなBoolean型をあつかう

SQLServerでBoolean型を扱う SQLServerに

テーブルにユニークインデックス(UNIQUE INDEX)を作成する

テーブルにユニークインデックス(UNIQUE INDEX)を作成

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

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

→もっと見る



PAGE TOP ↑