select 表示


  select 演算

  
Oracle 以外は

select 1 + 2 

のようにして、テーブルを選択しなくても演算結果を見る事ができます

Oracle では以下のように記述します

select 1 + 2 from dual
  

  NULL が含まれる演算




  
例外無く演算結果は NULL になります

select 1 + 2 + NULL

上記結果は行は返されますが、内容は NULL です
  

氏名給与手当
浦岡 友也180000
尾浦 和之180000
原川 輝行180000
吉田 浩代180000
松内 洋樹180000
森内 春行180000
田川 正也180000
田鈴 元代180000
丸木 雅子1800005000
尾多 正美180000

社員テーブルの支給額を表示しようとすると以下のようになります

select 氏名,給与+手当 as 支給額 from 社員テーブル

氏名支給額
浦岡 友也
尾浦 和之
原川 輝行
吉田 浩代
松内 洋樹
森内 春行
田川 正也
田鈴 元代
丸木 雅子185000
尾多 正美

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 社員テーブル
  


  Case

SQL の記述内に複雑な条件を使用します

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
  




yahoo  google  MSDN  MSDN(us)  WinFAQ  Win Howto  tohoho  ie_DHTML  vector  wdic  辞書  天気 


[dbaccess]
Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
25/04/06 16:09:42
InfoBoard Version 1.00 : Language=Perl

1 BatchHelper COMprog CommonSpec Cprog CprogBase CprogSAMPLE CprogSTD CprogSTD2 CprogWinsock Cygwin GameScript HTML HTMLcss InstallShield InstallShieldFunc JScript JScriptSAMPLE Jsfuncs LLINK OldProg OracleGold OracleSilver PRO PRObrowser PROc PROconePOINT PROcontrol PROftpclient PROjscript PROmailer PROperl PROperlCHAT PROphp PROphpLesson PROphpLesson2 PROphpLesson3 PROphpfunction PROphpfunctionArray PROphpfunctionMisc PROphpfunctionString PROsql PROvb PROvbFunction PROvbString PROvbdbmtn PROvbonepoint PROwebapp PROwin1POINT PROwinSYSTEM PROwinYOROZU PROwindows ProjectBoard RealPHP ScriptAPP ScriptMaster VBRealtime Vsfuncs a1root access accreq adsi ajax amazon argus asp aspSample aspVarious aspdotnet aw2kinst cappvariety centura ckeyword classStyle cmaterial cmbin cmdbapp cmenum cmlang cmlistbox cmstd cmstdseed cmtxt cs daz3d db dbCommon dbaccess dnettool dos download flex2 flex3 flex4 framemtn framereq freeWorld freesoft gimp ginpro giodownload google hdml home hta htmlDom ie9svg install java javaSwing javascript jetsql jquery jsp jspTest jspVarious lightbox listasp listmsapi listmsie listmsiis listmsnt listmspatch listmsscript listmsvb listmsvc memo ms msde mysql netbeans oraPlsql oracle oracleWiper oraclehelper orafunc other panoramio pear perl personal pgdojo pgdojo_cal pgdojo_holiday pgdojo_idx pgdojo_ref pgdojo_req php phpVarious phpguide plsql postgres ps r205 realC realwebapp regex rgaki ruby rule sboard sc scprint scquest sdb sdbquest seesaa setup sh_Imagick sh_canvas sh_dotnet sh_google sh_tool sh_web shadowbox shgm shjquery shvbs shweb sjscript skadai skywalker smalltech sperl sqlq src systemdoc tcpip tegaki three toolbox twitter typeface usb useXML vb vbdb vbsfunc vbsguide vbsrc vpc wcsignup webanymind webappgen webclass webparts webtool webwsh win8 winofsql wmi work wp youtube

links

    WinOfSql( SQLの窓 )
   winofsql.jp ドメインのページは全てリンクフリーです。
   lightbox.on.coocan.jp ドメインも winofsql.jp と同様です。
   連絡先メールは、ユーザ名:lightbox、ドメイン名:nifty.com です。


プラバシーポリシー