SQL Serverでは使用できない標準SQLと代替SQL

基本的に
 ・標準SQLは全てのRDBMで使用可能
です!

ですが
 ・一部の標準SQLは特定のRDBMSで使用不可
です!
※つまり特定のRDBMSは、一部の標準SQLを実装していません。
※また特定のRDBMSでのみ使用できるSQL(方言)があります。

この記事では
 ・SQL Serverでは使用できない標準SQL
 ・代替となるSQL
を記載します!

PR

MOD関数(割り算の余りを取得する関数)

標準SQLの「MOD関数」は、SQL Serverで使用できません。
代替SQLとして、SQL Serverでは「%演算子」があります。

SELECT 
	7 % 3 AS '割り算の余り'
割り算の余りを取得
割り算の余りを取得
PR

文字列結合の演算子「||」

標準SQLの演算子「||」は、SQL Serverで使用できません。
代替SQLとして、SQL Serverでは「+演算子」があります。

SELECT 
	'aiueo' + 'あいうえお' AS '文字列結合'
文字列結合
文字列結合
PR

LENGTH関数(文字数を取得する関数)

標準SQLの「LENGTH関数」は、SQL Serverで使用できません。
代替SQLとして、SQL Serverでは「LEN関数」があります。

SELECT 
	LEN('aiueo') AS '文字数'
文字数を取得する関数
文字数を取得する関数
PR

SUBSTRING関数(文字数の一部を切り出す関数)

SQL Serverでも「SUBSTRING関数」を使用することはできますが、
 ・標準SQLの「SUBSTRING関数」と
 ・SQL Serverの「SUBSTRING関数」では、
構文(引数)が違います。

「SQL ServerのSUBSTRING関数」の構文(引数)は以下となります。

「SQL ServerのSUBSTRING関数」の構文(引数)

SUBSTRING (対象文字列, 切り出し開始位置, 切り出す文字数)



SELECT 
	SUBSTRING('aiueo',2,3) AS '文字数'
文字数の一部を切り出す関数
文字数の一部を切り出す関数
PR

CURRENT_DATE関数(現在の日付を取得する関数)

標準SQLの「CURRENT_DATE関数」は、SQL Serverで使用できません。
代替SQLとして、SQL Serverでは「GETDATE関数」等があります。

ただ「GETDATE関数」は日付のみでなく時間も取得するため、
時間を除いた日付のみ取得する際は、
 ・FORMAT関数
 ・CONVERT関数
を使用します。

SELECT 
	GETDATE()                        AS 'GETDATE関数のみ',
	FORMAT(GETDATE(),'yyyy/MM/dd')   AS 'FORMATを使用',
	CONVERT(NVARCHAR,GETDATE(),111)  AS 'CONVERTを使用'
現在の日付を取得する関数
現在の日付を取得する関数
PR

EXTRACT関数(日付から「年」等の一部を切り出す関数)

標準SQLの「EXTRACT関数」は、SQL Serverで使用できません。
代替SQLとして、SQL Serverでは「DATEPART関数」等があります。


SELECT
	GETDATE()                 AS 'GETDATE関数のみ',
	DATEPART(YEAR, GETDATE())  AS 'YEAR',
	DATEPART(MONTH, GETDATE()) AS 'MONTH',
	DATEPART(DAY, GETDATE())   AS 'DAY',
	DATEPART(HOUR, GETDATE())  AS 'HOUR'
日付から「年」等の一部を切り出す関数
日付から「年」等の一部を切り出す関数

  

以下の理由により、RDBMSには様々な違いがあります。
・標準SQLの整備が遅れた
・他のRDBMSには無い機能を作成することで、優位な立場を得る
・他のRDMBSに乗り換えられないようにする

標準化が徹底されていないという事実は、
利用者からすれば迷惑な話ですが、
企業としては仕方がないことではあります。
※企業の目的は「利益の追求」のため。

タイトルとURLをコピーしました