トップページに戻る
DSP受験記
記事(OTN)
記事(CodeZine)
MSDN C#
@IT C#入門
2006年 2月16日から2007年 7月28日までのブログ
2007年 8月 1日から2007年10月28日までのブログ
2007年10月20日から2008年 5月 8日までのブログ
2008年 5月22日から2008年 9月 3日までのブログ
2008年 9月 4日から2009年 2月 4日までのブログ
2009年 2月 7日から2009年 5月20日までのブログ
2009年 5月22日から2009年 7月13日までのブログ
2009年 7月15日から2009年11月11日までのブログ
2009年11月14日から2010年 3月13日までのブログ
2010年 3月15日から2010年 7月21日までのブログ
2010年 7月24日から2011年 3月29日までのブログ
2011年 3月30日から2012年 1月11日までのブログ
2012年 1月18日から2014年 3月18日までのブログ
2014年 3月21日から2014年11月15日までのブログ
2014年11月22日から2015年 3月 1日までのブログ
2015年 3月15日から2015年 5月30日までのブログ
2015年 6月 7日から2018年 4月24日までのブログ
2018年 7月21日から2021年 2月19日までのブログ
最新のブログ
●2011年6月17日(金)
US-OTN --- How the join works
旧式の結合構文での読み方と考え方
Select a.col1,a,col2,b.col1,c.col1,d.col1
from Table1 a, Table2 b, Table3 c, Table4 d
where a.col4 = b.col4
and d.col4 = c.col4(+)
最初に内部結合とクロスジョインが実行される。
次に外部結合が実行される。
Select a.col1,a,col2,b.col1,c.col1,d.col1
from Table1 a
inner Join Table2 b on a.col4 = b.col4
cross Join Table3 d
Left Join Table4 c on d.col4 = c.col4
*************************************************************
以下サンプル
create table tA(col1 int);
create table tB(col2 int);
create table tC(col3 int);
insert into tA values(1);
insert into tB values(1);
insert into tA values(2);
select *
from tA,tB,tC
where tA.col1=tB.col2
and tB.col2=tC.col3(+);
COL1 COL2 COL3
---- ---- ----
1 1 null
select *
from tA
Join tB
on tA.col1=tB.col2
Left Join tC
on tB.col2=tC.col3;
COL1 COL2 COL3
---- ---- ----
1 1 null
●2011年6月21日(火)
US-OTN --- nvl function changes dataType from char to varchar2
SQL> create table fullJoinTest1(col1 char(14));
Table created.
SQL> create table fullJoinTest2(col1 char(14));
Table created.
SQL> insert all
2 into fullJoinTest1 values('aaa')
3 into fullJoinTest1 values('bbb')
4 into fullJoinTest2 values('aaa')
5 into fullJoinTest2 values('ccc')
6 select 1 from dual;
4 rows created.
SQL> select nvl(a.col1,b.col1) as aaaa
2 from fullJoinTest1 a full join fullJoinTest2 b
3 on a.col1=b.col1
4 where nvl(a.col1,b.col1)= 'ccc';
no rows selected
SQL> create table fullJoinTest3 as
2 select nvl(a.col1,b.col1) as "WhatIsType?"
3 from fullJoinTest1 a full join fullJoinTest2 b
4 on a.col1=b.col1
5 where nvl(a.col1,b.col1)= 'ccc';
Table created.
SQL> desc fullJoinTest3
Name Null? Type
------------- -------- ------------
WhatIsType? VARCHAR2(14)
SQL> create table fullJoinTest4 as
2 select case when a.col1 is not null then a.col1 else b.col1 end as "WhatIsType?"
3 from fullJoinTest1 a full join fullJoinTest2 b
4 on a.col1=b.col1;
Table created.
SQL> desc fullJoinTest4
Name Null? Type
----------- -------- --------
WhatIsType? CHAR(14)
マニュアルに明記されてたか・・・
マニュアル --- NVL
expr1が文字データの場合、Oracle Databaseは2つの引数を比較する前にexpr2をexpr1のデータ型に変換し、
expr1のキャラクタ・セットでVarChar2を戻します。
●2011年8月14日(日)
windows版のOracle11gR2でSQLPlusW.exeを使う方法
*********************************************************************
手順1
10gR2のサーバ(もしくはクライアント)のbinフォルダにあって、
11gR2のbinフォルダにないファイルを全て、11gR2のbinフォルダにコピー
*********************************************************************
手順2
SQLPlusW.exeを起動すると、
Message file UTILITY_MSG\spw<lang>.msb not found!
といったエラーメッセージが表示されるので、
10gR2のサーバ(もしくはクライアント)か
11gR1のサーバ(もしくはクライアント)の
sqlplus\mesg\spwja.msb
sqlplus\mesg\spwus.msb
を11gR2の該当ファルダにコピー
●2011年9月23日(金)
図でイメージするOracle DatabaseのSQL全集
第6段(階層問い合わせ)準備中。
第7段(with句)は、構想を練ってる最中です。
with句の構想を練ってたら、インラインビューをwith句で記述すると、SQLを上から下に読めることに気付きました。
PostgreSQLの再帰SQLの使用例 --- 再帰のないwith句
私の愛読書、C/C++によるプログラミングスタイルブックの62ページにも、
人間はプログラムリストを上から下へという流れで見ていく。
だからこの流れに逆らわない方向での読みやすさ向上策が必要になる。
と記述されてますね。
●2011年10月1日(土)
@IT --- コマンドプロンプトのfindコマンド
コマンドプロンプトのコマンドは、telnetから実行できるので便利です。
(ローカルファイルだとEmEditでgrepしたほうがいいですが)
cd /d d:workfile
find "★" *.txt
●2011年10月5日(水)
アイコンバーの配置
●2011年10月19日(水)
C#やVB.NETにおいて、
ListジェネリックやStringクラスの
Containsメソッドは、多重定義されていないが
IndexOfメソッドは、多重定義されている。(開始位置や対象数を指定可能)
MSDN --- List(T)クラス
ContainsメソッドがあるからIndexOfメソッドはイラネ
と思ってた時期がありました :-)
●2011年11月20日(日)
OTNの記事でクエリストリングにprintOnly=1
を追加すると見たい記事だけを表示できます。
こんな感じです
●2011年12月3日(土)
Analytic Functions (Transact-SQL)
SQLServer2012で分析関数が拡張されるようですね。
Lead関数とLag関数とFirst_Value関数とLast_Value関数がサポートされるようですね。
ignore nullsはサポートされないようですが
分析関数のsum関数などでのorder by指定がサポートされるようですね。
RANGE cannot be used with <unsigned value specification> PRECEDING
or <unsigned value specification> FOLLOWING.
だそうですが
中央値を求めるのに使えるpercentile_cont関数
月末の日を求めるEoMonth関数とか、
Excelにある、月末の日を求めるEoMonth関数
VB6にある、IIF関数やChoose関数も追加されるらしい。
select文でのOffSetとFetchもサポートするらしい。
MSDN --- SQLServer2012のTransact-SQLの新機能をまとめるスレッド
●2011年12月11日(日)
@IT --- .NET Frameworkのバージョンを整理する
WindowsVistaでは2.0と3.0
Windows7では2.0と3.0と3.5
がバンドルされている。
●2011年12月15日(金)
SQLServerのSQLのサンプル集
SQLServerでの実験結果などをメモしていくサイトを作りました。
●2011年12月28日(水)
仮想列にインデックスを貼る実験
create table VirtualColTest(
ColA VarChar2(10),
VirtualCol as (RegExp_Replace(ColA,'[a-z]')) Virtual);
insert into VirtualColTest(ColA) values('1a2b3c');
create index indTest on VirtualColTest(VirtualCol);
set autot trace
select * from VirtualColTest where VirtualCol = 'X';
SQL> select * from VirtualColTest where VirtualCol = 'X';
実行計画
----------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
----------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 19 | 2 (0)| 00:00:01 |
| 1 | TABLE ACCESS BY INDEX ROWID| VIRTUALCOLTEST | 1 | 19 | 2 (0)| 00:00:01 |
|* 2 | INDEX RANGE SCAN | INDTEST | 1 | | 1 (0)| 00:00:01 |
----------------------------------------------------------------------------------------------
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
MSDN --- SQLServerの分析関数の使用例の「10. 連続範囲の最小値と最大値 (3人旅人算)」を見ながら・・・
●2012年1月11日(水)
US-OTN --- Nice introduction "Frank Kulash" :-)
Oracle Database正規表現内のPOSIXメタキャラクタ
ハイフン(-)は、リストの先頭または最後にある場合はリテラルで、
[#--]のように範囲正規表現にある場合は範囲終了ポイントです。
右カッコ(])は、リストの先頭にある場合はリテラルとして扱われます。
SQL> col tes1 for a20
SQL> col tes3 for a20
SQL> select
2 regexp_replace(val,'[][-]') as tes1,
3 regexp_replace(val,'[^][-]') as tes3
4 from (select 'abc[]\\\---' as val from dual);
TES1 TES3
------ -----
abc\\\ []---
TOEIC
オライリー
翔泳社SHOP
正規表現
C#のサンプル集
SQLServer
JavaScript