SQL Server

MS SQL ServerでKMG単位で表示する

DECLARE @size int; SELECT @size=8192; SELECT STR(@size/CASE WHEN @size<1024 THEN 1 ELSE POWER(1024,ROUND(LOG(@size)/LOG(1024),0,1)) END ) + SUBSTRING('KMGT',CAST(ROUND(LOG(@size)/LOG(1024),0,1) as bigint),1); GO 8K ストアドプロシージャ登録…

JOBの内容一覧を表示する

ストアドプロシージャ sp_help_jobでは、詳細なjobの一覧をまとめて取得することができない。(jobテーブルの一覧か、引数を指定しての詳細の情報しか取得できない) EXEC msdb.dbo.sp_help_job; GO 詳細なjobの一覧をまとめて取得するには以下の直接システム…

MS SQL ServerでHHMMSS形式のinteger型をHH:MM:SSの文字列に変換する

SysJobsなどのシステムテーブルで使用されている、時刻のフォーマットがinteger型で、HHMMSS形式で格納されている為、これをHH:MM:SSの文字列に変換する方法。もともと、クライアント側(プログラム側C#等)のDate関数を使うことが想定されている為、SQL Serve…

MS SQL Serverでビット幅算出

SELECT ROUND(LOG(8)/LOG(2),0,1)+1 LOG(8)/LOG(2)はMySQLのLOG(8,2)またはLOG2(8)の代わりMS SQL ServerはMySQLのLOG関数のように第2オプションでbaseの指定ができない為。ROUND(X,0,1)は第3オプションを指定することで、小数点以下切捨てとして使用してい…

MS SQL ServerでOracleのDECODE MySQLのELT

MS SQL ServerではCASE WHENが使えるので基本的にはこちらを使う。 SQL Server 2012 からMySQLのELTと同等のフォーマットのCHOOSEが使える。 http://technet.microsoft.com/ja-jp/library/hh213019.aspx CHOOSE ( index, val_1, val_2 [, val_n ] ) これと先…