Home > タグ > データベース

データベース

時間差で生成されるデータ間の差分生成のためのテーブル設計について

詳しくはまだ言えないのですが、現在SEO遊びのためのサイトを鋭意製作中です。
その中で、時間差で生成されるデータ間の差分生成のためのテーブル設計について悩んでいます。

SQL Serverの秘密

どうも!僕です。


仕事中です(;´Д`)

むしゃくしゃしたのでSQL Server 2000のストアド内で
配列操作っぽいことをする方法を考えておりました。

以下考えてみた方法です。

1.テーブル変数を使う方法
これは、結構オーソドックスなんではないでしょうか?

declare @a table(cd int, dat varchar(10))
declare @b table(cd int, dat varchar(10))

insert into @a (cd,dat) values (1,’A')
insert into @a (cd,dat) values (2,’B')
insert into @a (cd,dat) values (3,’C')
insert into @a (cd,dat) values (4,’D')
insert into @a (cd,dat) values (5,’E')

insert into @b (cd,dat) values (1,’A')
insert into @b (cd,dat) values (2,’B')
insert into @b (cd,dat) values (3,’R')
insert into @b (cd,dat) values (4,’D')
insert into @b (cd,dat) values (5,’Q')

select convert(varchar,a.cd) + ‘番目の”‘ + a.dat + ‘”と”‘ + b.dat + ‘”が違う’
from @a a, @b b where a.cd = b.cd and a.dat <> b.dat

利点:
テーブル変数のキー列を利用することによって、ループをまわす必要なく
配列(っポイものの)操作が出来る。(例のselect文)
テーブル変数を可変長配列みたいにして使える。
select dat from @a where cd = 3とかでインデックスアクセスっぽいことが出来るかも。

欠点:
使い道が限られるかも。

2.CASE文を使う方法
見た目重視。

declare @a varchar(10)
declare @b varchar(10)
declare @c int

set @c = 5

while @c > 0
begin
set @a = case @c
when 1 then ‘あ’
when 2 then ‘い’
when 3 then ‘う’
when 4 then ‘え’
when 5 then ‘お’
else ” end
set @b = case @c
when 1 then ‘あ’
when 2 then ‘い’
when 3 then ‘し’
when 4 then ‘て’
when 5 then ‘る’
else ” end
if @a <> @b
begin
select ‘”‘ + @a + ‘”と”‘ + @b + ‘”が違う’
end

set @c = @c - 1
end

利点:
見た目がいい。かもしれない。

欠点:
1のやり方より、さらに使い勝手が悪いかも。

本当は、こんなことを書きたかったわけじゃないんですよ。
タイトルにある通り、SQL Serverの秘密を発見してしまいまして・・・
知ってる人は知ってるのかもしれません。
これをやって、徹夜明けに独りほくそ笑んでる開発者も
すでにこの世には居るのかもしれません。

秘密を見るのは簡単です。
次の魔法の言葉をクエリアナライザに打ち込むだけです。

select char(15)

それでは皆さんごきげんよう!

トップページ > タグ > データベース

検索
フィード
メタ

ページの最初に戻る