ラベル SQLServer の投稿を表示しています。 すべての投稿を表示
ラベル SQLServer の投稿を表示しています。 すべての投稿を表示

2011年6月9日木曜日

[SQL Server]ANSI_NULLSオプションを取得する。

SQL Serverでは、NULL値との演算は常にNULL値が返ってきます。
WHERE句などでのNULL値との比較も必ずFALSEが返ります。

ANSI_NULLSオプションは、WHERE句などでNULLとの比較を成立させるかどうかを指定できます。
下のT-SQLでNULL値との比較がTRUEかどうかでANSI_NULLSオプションを取得します。

DECLARE @NULL_VALUE AS bit 
SET @NULL_VALUE = NULL 

IF NOT EXISTS(
    SELECT
        'ANSI_NULLS = OFF'
    WHERE
        @NULL_VALUE = NULL
) 
BEGIN 
    SELECT 'ON' AS [ANSI_NULLS_OPTION] 
END 
ELSE 
BEGIN 
    SELECT 'OFF' AS [ANSI_NULLS_OPTION] 
END 

ただし、今後のSQL Serverでは、ANSI_NULLSは常にONとなり、
SET ANSI_NULLS OFF を設定するアプリケーションすべてでエラーが発生するようになってしまうそうです。

NULL値との条件指定をする時は必ず" IS NULL "を使うのがベストです。

詳細は下記URLを参照のこと。
SET ANSI_NULLS (Transact-SQL)
http://technet.microsoft.com/ja-jp/library/ms188048.aspx

ちょっと考えればわかるようなことを真顔で書くのが私です。

2011年6月8日水曜日

T-SQLでキャッシュクリアするには…

DBCC使うんです。
同じセッションでクエリの実行速度判定をしたい場合とかは、キャッシュクリアしたほうが正確な測定ができます。
最近のSQL Serverは頭が良くて困るね(いい意味で
DBCC DROPCLEANBUFFERS
DBCC FREEPROCCACHE

2011年3月3日木曜日

SQL Serverでクエリを使ってテーブルの列情報を取得する

SQL Server 2000以降ならつかえたはず。
知っといて損はないクエリ。

意外とこういうことできることを知らない人が多い気がする。
…うちの会社はね。

後付でテーブル設計書作るときに必要な情報も大抵はこれでOKかと。

2010年12月10日金曜日

SQL Serverで16進数を10進数に変換する

Oracleとかだったら標準的な関数として搭載されていそうなものですが、残念ながらSQL Serverにはない。

会社の先輩に言われ、テストデータ作成用に作ったもの。
もったいないので公開しておく。