SQL Server

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

投稿日:2012/11/27 更新日:

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

データベースに登録されている内容を固定長のファイルに
出力する必要があったので、面倒な編集を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」になります。)

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

当サイトのおすすめ記事

レンタルサーバー 1

当サイトは約5年間、さくらのレンタルサーバで運用させて頂きました。 何かトラブルがあったわけではないのですが、WordPressの表示速度を速くしたくてSSD搭載のレンタルサーバーで運用してみることに ...

プログラミング 2

SQLでIFを使わずに条件分岐する SQLでIFを書けばWHERE句の内容を変えて検索できますが、条件ごとに同じようなSQLを 複数回書くのは面倒なので、1行で分岐できないかと言う事でSQLを作って見 ...

SQLServer 3

SQLServerで発生するエラーコードをSQLで取得する SQLServerで発生したエラーコードの内容を メッセージが定義されているテーブルから取得します。 エラーコードを取得するSQL SQLs ...

4

SQLServerでテーブル型を戻り値とする関数を作る SQLServerではINT型やVARCHAR型などを返す関数と同様に ユーザー定義テーブル型を戻り値とする関数を作成できます。 テーブル型を戻 ...

5

アフィリエイトで即効成果を出す アフィリエイトで成果を出す、なかなか難しいですよね。 サイトをいくつも立ち上げてすでにコツをつかんでいる人なら チョチョイっとやっていけるんでしょうけど。 でも実際はこ ...

-SQL Server
-, , ,

Copyright© ソフトウェア開発日記 , 2017 AllRights Reserved.