(2) 【文字列】LEFT ある文字列の左端から、指定した文字数分だけ取得する
SELECT LEFT('ABCDEF', 3) ⇒ 'ABC DEFGHI'
(3) 【文字列】RTRIM ある文字列の右端から空白を取り除く
SELECT RTRIM(' ABC DEF ') + 'GHI' ⇒ ' ABC DEFGHI'
(4) 【文字列】LTRIM ある文字列の左端から空白を取り除く
SELECT LTRIM(' ABC DEF ') + 'GHI' ⇒ 'ABC DEF GHI'
(5) 【文字列】REPLACE ある文字列の中で、特定の文字列を別の文字列に置換する
SELECT REPLACE('ABCDE', 'BCD', 'BCDBCD')⇒ 'ABCDBCDE'
(6) 【文字列】SUBSTRING ある文字列の中で、特定の位置から指定した文字数分だけ取得する
SELECT SUBSTRING('ABCDE', 3, 2)⇒ 'CD'
(7) 【文字列】UPPER ある文字列を大文字に変換する
SELECT UPPER('abcあいう012')⇒ 'ABCあいう012'
(8) 【文字列】LOWER ある文字列を小文字に変換する
SELECT LOWER('ABCあいう012')⇒ 'abcあいう012'
(9) 【文字列】LEN ある文字列の文字数を取得する
SELECT LEN('ABCあいう012') ⇒ 9
(10) 【日付・時刻】GETDATE / SYSDATETIME システム日付(SQL Serverがインストールされたマシンの日付)を取得する
(戻り値の型がGETDATEの場合はDATETIME型で、SYSDATETIMEの場合はDATETIME2型)
SELECT GETDATE(), SYSDATETIME()⇒ 2016-01-04 15:49:32.380 2016-01-04 15:49:32.38
(11) 【日付・時刻】YEAR ある日付の年の部分だけ取得する
SELECT YEAR(GETDATE())⇒ 2016
(12) 【日付・時刻】MONTH ある日付の月の部分だけ取得する
SELECT MONTH(GETDATE()) ⇒ 1
(13) 【日付・時刻】DAY ある日付の日の部分だけ取得する
SELECT DAY(GETDATE()) ⇒ 4
(14) 【日付・時刻】DATEPART ある日付の一部だけを取得する
SELECT DATEPART(YEAR , GETDATE()) AS 年
,DATEPART(MONTH , GETDATE()) AS 月
,DATEPART(DAY , GETDATE()) AS 日
,DATEPART(HOUR , GETDATE()) AS 時
,DATEPART(MINUTE , GETDATE()) AS 分
,DATEPART(SECOND , GETDATE()) AS 秒
,DATEPART(MILLISECOND , GETDATE()) AS ミリ秒
,DATEPART(NANOSECOND , GETDATE()) AS ナノ秒
⇒
年 月 日 時 分 秒 ミリ秒 ナノ秒
2014 1 4 16 34 52 40 40000000
(15) 【日付・時刻】DATEADD 日付を加算したり減算したりする
SELECT DATEADD(d, 1, '2014/01/01') ,DATEADD(d, -1, '2014/01/01')
⇒ 2014-01-02 00:00:00.000 2013-12-31 00:00:00.000
(16) 【日付・時刻】DATEDIFF 2つの日付の差を求める
SELECT DATEDIFF(d, '2014/01/01', '2014/01/01')
,DATEDIFF(d, '2014/01/01', '2014/01/02')
,DATEDIFF(d, '2014/01/02', '2014/01/01')
⇒ 0 1 -1
(17) 【変換】CAST データ型を変換する
SELECT CAST('012' AS INT) ,CAST(12 AS VARCHAR) ⇒ 12(INT型) 12(VARCHAR型)
(18) 【変換】CONVERT データ型を変換する
SELECT CONVERT(VARCHAR, GETDATE(),111) AS 'yyyy/mm/dd'
,CONVERT(VARCHAR, GETDATE(),112) AS 'yyyymmdd'
,CONVERT(VARCHAR, GETDATE(),120) AS 'yyyy-mm-dd hh:mi:ss'
,CONVERT(VARCHAR, GETDATE(),121) AS 'yyyy-mm-dd hh:mi:ss.mmm'
⇒ yyyy/mm/dd yyyymmdd yyyy-mm-dd hh:mi:ss yyyy-mm-dd hh:mi:ss.mmm
2014/01/02 20140102 2014-01-02 21:21:06 2014-01-02 21:21:06.383
※書式(スタイル):111(年/月/日(yyyy/mm/dd)),112(年月日(yyyymmdd)),120(年-月-日 時:分:秒(yyyy-mm-dd hh:mi:ss)),121(年-月-日 時:分:秒.ミリ秒(yyyy-mm-dd hh:mi:ss.mmm))
(19) 【数値】ROUND 四捨五入する
有効桁数は、正の値を指定した場合は小数点以下の桁数に、負の値を指定した場合は、小数点から左の桁数にまで丸めます。
SELECT ROUND(123.445, 2)
,ROUND(123.445, -2)
,ROUND(153.445, -2)
⇒ 123.450 小数点以下第三位を四捨五入し、第二までを求めている
100.000 小数点の左二桁目を四捨五入し、2の為繰り上がらず100となる
200.000 小数点の左二桁目を四捨五入し、5の為繰り上がり200となる
(20) 【数値】POWER 階乗を求める
SELECT POWER(2, 3) ⇒ 8
(21) 【数値】RAND 0から1までの範囲のランダムな数字を求める
SELECT RAND(), RAND(), RAND()
⇒ 0.273604264024087 0.949061768386125 0.880059316061561
(22) 【数値】CEILING 小数点以下を切り上げる
SELECT CEILING(1)
,CEILING(1.1)
,CEILING(1.9)
⇒ 1 2 2
(23) 【数値】FLOOR 小数点以下を切り捨てる
SELECT FLOOR(1)
,FLOOR(1.1)
,FLOOR(2.1)
⇒ 1 1 2
(24) 【数値】SQRT 平方根を求める
SELECT SQRT(2) ⇒ 1.4142135623731
4、集計を行う
(1) SUM 合計を求める
SELECT SUM(給料)
FROM TableA
(2) AVG 平均を求める
SELECT AVG(給料)
FROM TableA
・集計対象がNULLを許容する列の場合は「IS NULL(NULLを指定値に置換)」をしておく
SELECT AVG(ISNULL(給料, 0)) AS 'AVG(給料)'
,COUNT(ISNULL(給料, 0)) AS 'COUNT(給料)'
FROM TableA
・GROUP BYを使用して、「性別毎の平均年齢」とかなら集計する
SELECT 性別, AVG(年齢)
FROM TableA
GROUP BY 性別
・HAVINGを使って、「平均年齢が30才未満の性別」で絞り込みます
SELECT 性別, AVG(年齢)
FROM TableA
GROUP BY 性別
HAVING AVG(年齢) < 30
(3) MAX 最大値を求める
SELECT MAX(給料)
FROM TableA
(4) MIN 最小値を求める
SELECT MIN(給料)
FROM TableA
(5) COUNT 個数(行数)をカウントする
SELECT COUNT(*)
FROM TableA