|
|
Oracle 以外は
select 1 + 2
のようにして、テーブルを選択しなくても演算結果を見る事ができます
Oracle では以下のように記述します
select 1 + 2 from dual
| |
|
|
|
|
例外無く演算結果は NULL になります
select 1 + 2 + NULL
上記結果は行は返されますが、内容は NULL です
| |
|
EXCEL と MDB での記述
|
select 氏名,
給与 + iif(手当 is null,0,手当) as 支給額
from 社員テーブル
select 氏名,
給与 + iif(isnull(手当),0,手当) as 支給額
from 社員テーブル
select 氏名,
給与 + val(手当&'') as 支給額
from 社員テーブル
| |
|
SQLServer での記述
|
select 氏名,
給与 + isnull(手当,0) as 支給額
from 社員テーブル
select 氏名,
給与+ coalesce(手当,0) as 支給額
from 社員テーブル
| |
|
MySQL での記述
|
select 氏名,
給与+ ifnull(手当,0) as 支給額
from 社員テーブル
select 氏名,
給与+ coalesce(手当,0) as 支給額
from 社員テーブル
| |
|
Oracle での記述
|
select 氏名,
給与+ nvl(手当,0) as 支給額
from 社員テーブル
select 氏名,
給与+ coalesce(手当,0) as 支給額
from 社員テーブル
| |
|
PostgreSQL での記述
|
select 氏名,
給与+ coalesce(手当,0) as 支給額
from 社員テーブル
| |
|
|
|
EXCEL と MDB での記述
|
select 氏名,所属,
switch(
所属='0001','A'
,所属='0002','B'
,所属<>'0002','X'
) as 所属分類
from 社員テーブル
| |
|
SQLServer・MySQL・PostgreSQL での記述
|
select 氏名,所属,
case 所属
when '0001' then 'A'
when '0002' then 'B'
else 'X'
end as 所属分類
from 社員テーブル
select 氏名,所属,
case
when 所属 = '0001' then 'A'
when 所属 = '0002' then 'B'
else 'X'
end as 所属分類
from 社員テーブル
| |
|
Oracle での記述
|
select 氏名,所属,
case
when 所属 = '0001' then 'A'
when 所属 = '0002' then 'B'
else 'X'
end as 所属分類
from 社員テーブル
select 氏名,所属,
decode(所属,
'0001','A',
'0002','B',
'X'
) as 所属分類
from 社員テーブル
| |
|
|
|
EXCEL と MDB での記述
(※ left と right が使用できます)
|
select 氏名
,mid(氏名,2,1) as 2文字目
from 社員テーブル
where
mid(氏名,2,1) = '田'
-----------------------------------------------------
文字列の長さ
-----------------------------------------------------
select 氏名
,len(氏名) as 長さ1
,lenb(氏名) as 長さ2
from 社員テーブル
| |
|
SQLServer での記述
(※ left と right が使用できます)
|
select 氏名
,substring(氏名,2,1) as [2文字目]
from 社員テーブル
where
substring(氏名,2,1) = '田'
-----------------------------------------------------
右から文字列を取得する場合は以下のように記述します
-----------------------------------------------------
select 氏名,len(氏名) as 長さ
,substring(氏名,len(氏名)-2+1,2) as 右から二文字
from 社員テーブル
| |
|
MySQL での記述
(※ left と right が使用できます)
|
select 氏名
,substring(氏名,2,1) as 2文字目
from 社員テーブル
where
substring(氏名,2,1) = '田'
select 氏名
,mid(氏名,2,1) as 2文字目
from 社員テーブル
where
mid(氏名,2,1) = '田'
-----------------------------------------------------
文字列の長さを取得する場合は注意
-----------------------------------------------------
select 氏名
,length(氏名) as 長さ1
,char_length(氏名) as 長さ2
from 社員テーブル
| |
|
Oracle での記述
|
select 氏名
,substr(氏名,2,1) as "2文字目"
from 社員テーブル
where
substr(氏名,2,1) = '田'
-----------------------------------------------------
右から文字列を取得する場合は以下のように記述します
-----------------------------------------------------
select 氏名,length(氏名) as 長さ
,substr(氏名,length(氏名)-2+1,2) as 右から二文字
from 社員テーブル
-----------------------------------------------------
文字列の長さ
-----------------------------------------------------
select 氏名
,length(氏名) as 長さ1
,lengthb(氏名) as 長さ2
from 社員テーブル
| |
|
PostgreSQL での記述
|
select 氏名
,substring(氏名,2,1) as 2文字目
from 社員テーブル
where
substring(氏名,2,1) = '田'
select 氏名
,substr(氏名,2,1) as 2文字目
from 社員テーブル
where
substr(氏名,2,1) = '田'
-----------------------------------------------------
右から文字列を取得する場合は以下のように記述します
-----------------------------------------------------
select 氏名,length(氏名) as 長さ
,substring(氏名,length(氏名)-2+1,2) as 右から二文字
from 社員テーブル
-----------------------------------------------------
文字列の長さ
-----------------------------------------------------
select 氏名
,length(氏名) as 長さ1
,octet_length(氏名) as 長さ2
from 社員テーブル
| |
|
|
|
EXCEL と MDB での記述
|
select
性別 & ',' & 給与
,社員コード & ',' & 氏名
from 社員テーブル
| |
|
SQLServer での記述
|
select
cast(性別 as varchar) + ',' + cast(給与 as varchar)
,convert(varchar,性別) + ',' + convert(varchar,給与)
,社員コード + ',' + 氏名
from 社員テーブル
| |
|
MySQL での記述
|
select
concat(性別,',',給与)
,concat(社員コード,',',氏名)
from 社員テーブル
| |
|
Oracle・PostgreSQL での記述
|
select
性別 || ',' || 給与
,社員コード || ',' || 氏名
from 社員テーブル
| |
|
|
|
EXCEL と MDB での記述
|
select
date()
,time()
,now()
,cdate('2000/01/01') + 100
| |
|
SQLServer での記述
|
select
getdate()
,cast('2000/01/01' as datetime) + 100
,convert(datetime,'2000/01/01') + 100
| |
|
MySQL での記述
( バージョンによって可・不可があります )
|
4.0.17 で OK (但し、+数値で日付にならない、 + INTERVAL 1 DAY と記述します)
select
curdate()
,curtime()
,now()
,cast('2000/01/01' as datetime)
以下未確認
select
,convert(datetime,'2000/01/01')
| |
|
Oracle での記述
|
select
sysdate
,cast('2000/01/01' as date) + 100
,to_date('2000/01/01','YYYY/MM/DD') + 100
,to_date('20000101','YYYYMMDD') + 100
from dual
| |
|
PostgreSQL での記述
|
時間部分がなければ + 数値可
select
localtime
,date '2000/01/01' + 100
,cast('2000/01/01' as date) + 100
,to_date('2000/01/01','YYYY/MM/DD') + 100
,to_date('20000101','YYYYMMDD') + 100
| |
|
|
|