いつもお世話になっております。
RfromL.comです。
SQLServerにおいて、テーブルデータをゼロパディングして固定長でselectするVIEW定義についてです。
1.はじめに
view(ビュー)定義とは、実態のない仮想テーブルのようなもので、SQL文に名前をつけてDB上に保存しておくものです。
たとえば、以前SQLserver上でselectする際にformat関数で行う方法について紹介しました。
「【SQL Server】テーブルの数値項目を0埋めの固定長でselectする「format関数」」参考
このselect文をビューとして名前を付けて保存しておくと毎回format文を書かなくて良いですし、プログラム上でも、良く使用するselectであるならview定義を使った方がすっきりします。
今回はformat関数を使って数値項目をゼロパディングして、固定長でselectするビューを作成してみます。
なお、使用した環境は以下のバージョンとなっています。
OS | Windows11 Home 64ビット |
DBMS | SQL Server 2019 |
統合環境 | SQL Server Management Studio v18.10 |
2.select into の構文
構文は以下の通りです。
create view [作成するビューの名前] as
[ SELECT文 ]
今回はビューの参照元とするテーブルとして[価格情報]テーブルを用意。
[価格情報]テーブルは可変長の数値項目を持っています。
以下画像のように可変長の数値項目部分は登録されている値によって、データの桁数が変わるのでゼロパディング(数値の左側を0埋め)して、固定長にするViewを作成してみます。

viewの名称は[V価格情報]で作成します。
この場合のSQL文が以下の通りとなります。
create view V価格情報 as
select 銘柄コード
,format(価格 ,'0000000000') as 価格
,format(利回り ,'000.00') as 利回り
,format(NAV ,'0000000000') as NAV
,format(NAV倍率 ,'000.00') as NAV倍率
,format(時価総額 ,'0000000000') as 時価総額
,format(出来高 ,'0000000000') as 出来高
,基準年月日
from 価格情報;
数値項目部分をformat関数でゼロ埋めしつつ桁数を指定してselectするVeiwです。
format関数については「【SQL Server】テーブルの数値項目を0埋めの固定長でselectする「format関数」」で使用しましたが、今回は小数点を含む項目もあるのでformat関数で小数点の位置も含めて指定しています。
3.テスト環境
テスト用に用意したテーブルとテーブルデータの情報です。
この環境を事前に用意しておくことを前提としてテストを実施します。
3-1.テーブル
テスト用に作成したテーブルは「価格情報」テーブルです。
[価格情報]テーブルレイアウト
No | 項目名 | データ型 | KEY |
---|---|---|---|
1 | 銘柄コード | char | ○ |
2 | 価格 | numeric | |
3 | 利回り | numeric | |
4 | NAV | numeric | |
5 | NAV倍率 | numeric | |
6 | 時価総額 | numeric | |
7 | 出来高 | numeric | |
8 | 基準年月日 | char | ○ |
[テーブルクリエイト文]
CREATE TABLE [dbo].[価格情報](
[銘柄コード] [char](4) NOT NULL,
[価格] [numeric](18, 0) NOT NULL,
[利回り] [numeric](9, 2) NOT NULL,
[NAV] [numeric](12, 0) NOT NULL,
[NAV倍率] [numeric](9, 2) NOT NULL,
[時価総額] [numeric](12, 0) NOT NULL,
[出来高] [numeric](12, 0) NOT NULL,
[基準年月日] [char](8) NOT NULL,
PRIMARY KEY CLUSTERED
(
[銘柄コード] ASC,[基準年月日] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
3-2.データ
テスト用テーブル「価格情報」テーブルには以下のデータを投入しておきます。
銘柄コード | 価格 | 利回り | NAV | NAV倍率 | 時価総額 | 出来高 | 基準年月日 |
---|---|---|---|---|---|---|---|
8991 | 99200 | 5.40 | 123268 | 0.80 | 46336 | 1885 | 20250327 |
8992 | 154500 | 3.42 | 128871 | 1.20 | 105310 | 417 | 20250327 |
9997 | 118000 | 5.55 | 123495 | 0.96 | 41532 | 1051 | 20250327 |
9998 | 116700 | 5.61 | 123495 | 0.94 | 41075 | 1585 | 20250327 |
9999 | 99300 | 5.40 | 123268 | 0.81 | 46383 | 3344 | 20250327 |
[データインサート文]
insert into 価格情報 values(8991,99200,5.40,123268,0.80,46336,1885,20250327);
insert into 価格情報 values(8992,154500,3.42,128871,1.20,105310,417,20250327);
insert into 価格情報 values(9997,118000,5.55,123495,0.96,41532,1051,20250327);
insert into 価格情報 values(9998,116700,5.61,123495,0.94,41075,1585,20250327);
insert into 価格情報 values(9999,99300,5.40,123268,0.81,46383,3344,20250327);
4.実行
①select文でview参照元テーブルが存在しているか確認

②create view を実行してviewを作成

③作成したviewをselectして機能するか確認

ビューの中で数値項目をformat関数でゼロパディングしているので、ビューをselectすると固定長のゼロパディングでデータが表示されます。
5.おわりに
作成するviewの名称については、ビューの参照元となる[価格情報]テーブルの先頭に「V」を付与して[V価格情報]としました。
現場によってルールは変わってくると思いますが、ビューの名称は「View」の頭文字「V」をつけて命名することが多いです。
「V」以降の名称については、さまざまです。
参照元となるテーブルが一つであれば、今回のように「価格情報」に「V」を付与して「V価格情報」となりますが、joinなどで結合して参照するビューの場合は、ビューで参照するデータ郡の意味合いやデータの用途からつけたりします。
あまりいい例ではないですが「Vデータ連携用DMP」とか。
この場合はデータ連携ファイルを作成する際にダンプして使う為のビュー。みたいな感じです。
以上です。
宜しくお願い致します。