![](http://sqlserver.work/wp-content/themes/cocoon-master/images/b-woman.png)
基本的に
・標準SQLは全てのRDBMで使用可能
です!
![](http://sqlserver.work/wp-content/themes/cocoon-master/images/b-woman.png)
ですが
・一部の標準SQLは特定のRDBMSで使用不可
です!
※つまり特定のRDBMSは、一部の標準SQLを実装していません。
※また特定のRDBMSでのみ使用できるSQL(方言)があります。
![](http://sqlserver.work/wp-content/themes/cocoon-master/images/b-woman.png)
この記事では
・SQL Serverでは使用できない標準SQL
・代替となるSQL
を記載します!
MOD関数(割り算の余りを取得する関数)
標準SQLの「MOD関数」は、SQL Serverで使用できません。
代替SQLとして、SQL Serverでは「%演算子」があります。
SELECT
7 % 3 AS '割り算の余り'
![割り算の余りを取得](https://sqlserver.work/wp-content/uploads/2020/08/sql_nothyoujunnsql_001.png)
文字列結合の演算子「||」
標準SQLの演算子「||」は、SQL Serverで使用できません。
代替SQLとして、SQL Serverでは「+演算子」があります。
SELECT
'aiueo' + 'あいうえお' AS '文字列結合'
![文字列結合](https://sqlserver.work/wp-content/uploads/2020/08/sql_nothyoujunnsql_002.png)
LENGTH関数(文字数を取得する関数)
標準SQLの「LENGTH関数」は、SQL Serverで使用できません。
代替SQLとして、SQL Serverでは「LEN関数」があります。
SELECT
LEN('aiueo') AS '文字数'
![文字数を取得する関数](https://sqlserver.work/wp-content/uploads/2020/08/sql_nothyoujunnsql_003.png)
SUBSTRING関数(文字数の一部を切り出す関数)
SQL Serverでも「SUBSTRING関数」を使用することはできますが、
・標準SQLの「SUBSTRING関数」と
・SQL Serverの「SUBSTRING関数」では、
構文(引数)が違います。
「SQL ServerのSUBSTRING関数」の構文(引数)は以下となります。
SUBSTRING (対象文字列, 切り出し開始位置, 切り出す文字数)
SELECT
SUBSTRING('aiueo',2,3) AS '文字数'
![文字数の一部を切り出す関数](https://sqlserver.work/wp-content/uploads/2020/08/sql_nothyoujunnsql_004.png)
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を使用'
![現在の日付を取得する関数](https://sqlserver.work/wp-content/uploads/2020/08/sql_nothyoujunnsql_005.png)
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'
![日付から「年」等の一部を切り出す関数](https://sqlserver.work/wp-content/uploads/2020/08/sql_nothyoujunnsql_006.png)
![](http://sqlserver.work/wp-content/themes/cocoon-master/images/b-woman.png)
以下の理由により、RDBMSには様々な違いがあります。
・標準SQLの整備が遅れた
・他のRDBMSには無い機能を作成することで、優位な立場を得る
・他のRDMBSに乗り換えられないようにする
![](http://sqlserver.work/wp-content/themes/cocoon-master/images/b-woman.png)
標準化が徹底されていないという事実は、
利用者からすれば迷惑な話ですが、
企業としては仕方がないことではあります。
※企業の目的は「利益の追求」のため。