LoginSignup
0
1

More than 5 years have passed since last update.

SQLServerの変数のちょっと変わった挙動(Select編)

Last updated at Posted at 2018-03-10

概要

oracleのストアドを手動でsqlserver用に変換しているのだけれど、
元のソースが冗長な書き方をしていて無駄な発行を抑えられないかなと思って
いろいろ試してたら予想外な挙動をしたので備忘録。

その1

declare @Quantity int;

SELECT  @Quantity = ISNULL(Quantity, 0)
  FROM  t_XXX
where Quantity = -1;--レコード条件が0になる

select @Quantity;

結果はnull。わかりみが深い。

その2

declare @Quantity int;
Set @Quantity = 0 --★追加したよ

SELECT  @Quantity = ISNULL(Quantity, 0)
  FROM  t_XXX
where Quantity = -1;--レコード条件が0になる

select @Quantity;

結果は0。わかりみが浅い。しかし予想以上に星の存在感すごい。

どういうこと?

Select文の結果行が0件なので、そもそも代入が行われない模様。

つまり「前もって変数に初期値を設定していないと痛い目を見るかもしれないよ」って
ことですね。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1