Home > タグ > データベース
データベース
時間差で生成されるデータ間の差分生成のためのテーブル設計について
- 2007-07-30 (月)
- 技術
詳しくはまだ言えないのですが、現在SEO遊びのためのサイトを鋭意製作中です。
その中で、時間差で生成されるデータ間の差分生成のためのテーブル設計について悩んでいます。
その中で、時間差で生成されるデータ間の差分生成のためのテーブル設計について悩んでいます。
この場で続きを見る » もしくは 別ウインドウで続きを見る
SQL Serverの秘密
- 2006-12-04 (月)
- 技術
どうも!僕です。
仕事中です(;´Д`)
むしゃくしゃしたので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)
それでは皆さんごきげんよう!
仕事中です(;´Д`)
むしゃくしゃしたので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)
それでは皆さんごきげんよう!
トップページ > タグ > データベース
- 検索
- フィード
- メタ