LoginSignup
7
8

More than 5 years have passed since last update.

新卒2年目SEの備忘録[SQLServer 関数フォーマット +α まとめてみた]

Last updated at Posted at 2016-09-12

いちいち調べるのが面倒くさい・・

最近、SQLServerでのクエリ開発を行っていますが
毎回ちょっとした関数のフォーマットを調べるのが面倒でなりません!
そこで、自分がよく使う関数フォーマットを備忘録的にまとめた記事を作成しました。

SQLServerの関数フォーマット

1.文字列切り取り

 ・LEFT(切り取りたい文字列, "左"から何文字分切り取るか)
  例:LEFT('12345', 2)⇒'12'
 ・RIGHT(切り取りたい文字列, "右"から何文字分切り取るか)
  例:RIGHT('12345', 2)⇒'45'
 ・SUBSTRING(切り取りたい文字列, 切り取り開始位置, "開始位置"から何文字分切り取るか)
  例:SUBSTRING('SUBSTRING', 4, 6)⇒'STRING'

2.日時取得

 ・GETDATE()
  例:GETDATE()⇒2016-01-30 10:30:30.300
 ・YEAR(取得対象)
  例:YEAR(GETDATE())⇒2016
 ・MONTH()
  例:MONTH(GETDATE())⇒1
    ※01ではない事に注意。
 ・DAY()
  例:DAY(GETDATE())⇒30
 ・DATEDIFF(日時差の計算基準, 日時1, 日時2)
  例:DATEDIFF(d, '2016/01/01', '2016/01/05')⇒4
    ※dは午前0時を迎える度に、カウントが増加する。
    ⇒d以外の基準
 ・DATEADD(増減箇所, 増減値, 増減対象)
  例:DATEADD(mm, 1, CONVERT(date, '2016/01/05'))⇒2016/02/05
    ※DATEADDは、増減対象が日付型の場合のみ使用可能な事に注意。

3.型変換※[]は、指定なし可能

 ・CONVERT(変換後の型, 変換対象, [フォーマット])
  例:CONVERT(date, '2016/01/01(※varchar型)')⇒2016/01/30(※date型)
 <補足①>
  変換後の型の種類(代表的な一部)
   数値:int, decimal, float
   日時:date, time, datetime
   文字列:varchar
 <補足②>
  日時⇒文字列変換時のフォーマット
  ★CONVERT(VARCHAR, GetDate())   ⇒ 01 30 2016 10:30PM
  ★CONVERT(VARCHAR, GetDate(), 101) ⇒ 02/11/2007
  ★CONVERT(VARCHAR, GetDate(), 102) ⇒ 2007.02.11
  ★CONVERT(VARCHAR, GetDate(), 103) ⇒ 11/02/2007
  ★CONVERT(VARCHAR, GetDate(), 111) ⇒ 2007/02/11
  ★CONVERT(VARCHAR, GetDate(), 120) ⇒ 2007-02-11 12:34:56
  ※その他のフォーマット

以下、追記。(2016/12/13)

関数を使ってクエリを書いていく中で・・(+α:チューニング)

これまでは、想定通りのデータを抽出することに注力してきましたが
処理の遅さが気になってきたこの頃です。
そこで初めて、"チューニング=処理を早くするクエリの記述方法"を先輩から教わりました。
こちらも、備忘録がてらにまとめておこうと思います。

チューニングを行う中で、インデックス(見出し)という考え方が重要になってきます。
ここでは、インデックスについての説明は割愛します。※詳しくは上記リンクにて。

・SELECT句では、必要以外に*を使わない
 ⇒単純にカラム数が増えるため、検索速度が低下
・WHERE句の左辺側では、カラムに対して処理を行わない
 ⇒インデックスが無効となり、検索速度が低下
・<>条件を複数指定したい場合は、NOT INで代用する
 ⇒複数指定すると、走査も複数回になるため、検索速度が低下
・テーブル名に別名をつける
 ⇒「短い」別名をつけることにより、単純にソース文字数が減り処理速度が向上
・UNIONとUNION ALLの使い分け
 ⇒UNIONを多用しすぎると、重複行の削除に時間がかかってしまい、処理速度が低下

7
8
1

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
7
8