t-sql

SQL Server - ORDER BY 句で null は最小値扱い

当たり前のことのようにそんなもんだと思っていたのですが、あらためて MSDN を読んでいるとちゃんと記述があったのでメモ。 ORDER BY 句 (Transact-SQL) 引数の ASC | DESC のところを引用しておきます。 ASC | DESC 指定した列の値を昇順と降順のどちらで…

T-SQL で「数値」と「3桁区切りの文字列」を変換する

SQL Server 2012から format 関数と parse 関数を追加されています。 FORMAT (Transact-SQL) PARSE (Transact-SQL) これらの関数を使うと、 数値を3桁区切りの文字列に変換(format) 3桁区切りの文字列を数値に変換(parse) といったことをクエリだけで行…

T-SQL - sum 関数と over 句を使って累計を求める

sum 関数と over 句を使って累計を求めてみたいと思います。 SUM (Transact-SQL) OVER 句 (Transact-SQL) とりあえずデータ。どこかにある焼き鳥屋さんの売り上げのようなテーブルだと思ってもらえると。 select * into #Sale from (values ('2013/12/09', N…

T-SQL - like 演算子でワイルドカード文字(「%」や「_」)を検索

方法は2つあるんですね。探せば出てくるとは思いますが、メモしておきます。 ワイルドカード文字を角括弧([と])で囲む escape 句を使う LIKE (Transact-SQL) いつも通りとりあえずデータを用意して。 select * into #Message from (values(N'30cm'), (N'50…

t-sql - object_id 関数で一時テーブルを指定する

テーブルの存在チェックなどで使う object_id 関数で一時テーブルを指定する場合は、 object_id('tempdb..#Test') のように書くんですね。 また一つ勉強になりました。 OBJECT_ID (Transact-SQL)より。 一時テーブル名を指定する場合は、現在のデータベース…

T-SQL - select into 文とテーブル値コンストラクタ

select into文を使うと、create table文を使わずに新しいテーブルを作成できることを知りました。 INTO 句 (Transact-SQL) SELECT INTO を使用した行の挿入 そして、テーブル値コンストラクタ(values (...)のあれ)は、from句にも書けることを知りました。 …

行が存在すればupdate、存在しなければinsertするmerge文

merge文はたまーに使う時があって、いざ書こうとすると忘れてたりします。 なので簡単な例をメモしておきます。 merge文の例 こんなテーブルがあったとして。 create table #Fruit( Name nvarchar(3), Price int, constraint PK_Fruit primary key(Name)); @…

T-SQLのトリガーで時間帯(期間)の重なりを防ぐ

タイトルが微妙で後から自分が見ても、ん?なんだっけ?ってなりそうな気も・・・。 それはさておき、会議室とかを予約するようなシステムで「誰かがある会議室のある時間帯を予約したら、他の人はその時間帯を予約できない」といった制御をSQLだけでどうす…

case式を使って条件分岐するupdate文を試す

CASE式のススメ(後編)を読んで、update文でcase式を使って条件分岐するテクニックを知ってかなり感動しました。行ごとに異なる更新を1つのupdate文でできるのすごいですね。 今回はこの記事に書いてある、主キーを入れ替えるテクニックを少し応用してみた…