Advanced/W-ZERO3[es] を注文した
2007年10月12日 コンピュータ黒いのを注文した。
現在は J3002V と AH-H403C の2回線の契約をしているが、
電話番号を引き継ぐために J3002V を機種変更。
で、AH-H403C は停止する。
Advanced/W-ZERO3[es] (WS011SH) は Windows Mobile 6 なので RDP クライアントが入っている。
だから、 VPN さえ確保すればパソコンを持ち歩かなくて済むようになるのだが。。。。
現在は J3002V と AH-H403C の2回線の契約をしているが、
電話番号を引き継ぐために J3002V を機種変更。
で、AH-H403C は停止する。
Advanced/W-ZERO3[es] (WS011SH) は Windows Mobile 6 なので RDP クライアントが入っている。
だから、 VPN さえ確保すればパソコンを持ち歩かなくて済むようになるのだが。。。。
MS SQL Server の ISNULL と COALESCE の違い
2007年10月9日 コンピュータ========================
2014年2月28日追記
後述のリンク先にてここで書かれていることより
大きな違いについて言及されているので
一読を勧める。
========================
MS SQL Server に於いて
と
は同じ意味だと思っていた。
・・・しかし、上記の列a が nvarchar等文字列型だった場合は挙動が違ってくるのである。
仕事で、うっかり文字列型の列に対して「ISNULL(a,0)」と
してしまっていたところがあった(犯人は僕)。
これは「汚いが動いてしまう」コードだった。
別の人が「ISNULL より DB2 でも使える COALESCE の方がいい」
と「COALESCE(a,0)」に変えてしまった。
すると、これは「通常動かない」コードになった。
・・・気づかずにWebサイトにリリースされて発覚し、
大急ぎで正しく「COALESCE(a,’’)」修正され、再リリースとなった。
「ISNULL(a,0)」の場合、型は「第一引数の型」となる。
したがって、a が null の場合でも暗黙のキャストで文字列型で返ってくる。
「COALESCE(a,0)」の場合、型は「最も優先度の高い型」となる。
文字列型よりも 数値型の方が優先度が高いのでこの列は 数値型になる。
そして、a に 数値型にキャストできない文字列が入っていれば
その時点で SQL がエラーになる。
うぅ、ごめんなさい。。。。。orz
・・・ってもうちょっと調べた。
列a の文字列が全て数値にキャストできる場合、SQL の結果はきちんと返ってくる。
その場合、「ISNULL(a,0)」と「COALESCE(a,0)」は見かけは同じ結果が返ってくる。
しかし、「ISNULL(a,0)」は文字列型で、「COALESCE(a,0)」は数値型である。
そういうわけで、次の C# のプログラムの場合、ISNULL だと動くが COALESCE にすると実行時エラーになる。
まぁ、型には注意しましょう。あうあうあう。
===
2011年2月15日追記
SQL Server のデータ型の優先順位(SQL Server 2008)
http://msdn.microsoft.com/ja-jp/library/ms190309.aspx
=====
2014年2月28日
ISNULL と Coalesce にはもっと重大な違いがあった。
一読されることを勧める。
http://sqlmag.com/t-sql/coalesce-vs-isnull
2014年2月28日追記
後述のリンク先にてここで書かれていることより
大きな違いについて言及されているので
一読を勧める。
========================
MS SQL Server に於いて
SELECT ISNULL(a,0) FROM test1
と
SELECT COALESCE(a,0) FROM test1
は同じ意味だと思っていた。
・・・しかし、上記の列a が nvarchar等文字列型だった場合は挙動が違ってくるのである。
仕事で、うっかり文字列型の列に対して「ISNULL(a,0)」と
してしまっていたところがあった(犯人は僕)。
これは「汚いが動いてしまう」コードだった。
別の人が「ISNULL より DB2 でも使える COALESCE の方がいい」
と「COALESCE(a,0)」に変えてしまった。
すると、これは「通常動かない」コードになった。
・・・気づかずにWebサイトにリリースされて発覚し、
大急ぎで正しく「COALESCE(a,’’)」修正され、再リリースとなった。
「ISNULL(a,0)」の場合、型は「第一引数の型」となる。
したがって、a が null の場合でも暗黙のキャストで文字列型で返ってくる。
「COALESCE(a,0)」の場合、型は「最も優先度の高い型」となる。
文字列型よりも 数値型の方が優先度が高いのでこの列は 数値型になる。
そして、a に 数値型にキャストできない文字列が入っていれば
その時点で SQL がエラーになる。
うぅ、ごめんなさい。。。。。orz
・・・ってもうちょっと調べた。
列a の文字列が全て数値にキャストできる場合、SQL の結果はきちんと返ってくる。
その場合、「ISNULL(a,0)」と「COALESCE(a,0)」は見かけは同じ結果が返ってくる。
しかし、「ISNULL(a,0)」は文字列型で、「COALESCE(a,0)」は数値型である。
そういうわけで、次の C# のプログラムの場合、ISNULL だと動くが COALESCE にすると実行時エラーになる。
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Diagnostics;
namespace CoalesceTest
{
class Program
{
static void Main(string[] args)
{
DataTable dt = new DataTable("test");
//dt.Columns.Add(new DataColumn("NewA",typeof(string)));
SqlConnectionStringBuilder scb = new SqlConnectionStringBuilder();
scb.DataSource = ".";
scb.InitialCatalog = "test";
scb.IntegratedSecurity = true;
SqlConnection cnn = new SqlConnection(scb.ConnectionString);
SqlDataAdapter da = new SqlDataAdapter("SELECT ISNULL(a,0) NewA FROM test1", cnn);
//SqlDataAdapter da = new SqlDataAdapter("SELECT COALESCE(a,0) NewA FROM test1", cnn);
da.TableMappings.Add("table", "test");
da.Fill(dt);
foreach (DataRow row in dt.Rows)
{
string str = (string)row["NewA"]; <=== COALESCE だとエラー
Debug.WriteLine(str);
}
}
}
}
まぁ、型には注意しましょう。あうあうあう。
===
2011年2月15日追記
SQL Server のデータ型の優先順位(SQL Server 2008)
http://msdn.microsoft.com/ja-jp/library/ms190309.aspx
=====
2014年2月28日
ISNULL と Coalesce にはもっと重大な違いがあった。
一読されることを勧める。
http://sqlmag.com/t-sql/coalesce-vs-isnull
”END_OF_SQL” は「ヒアドキュメント」を調べましょう。。
2007年10月1日 コンピュータアクセス元を見ていてたまに「END_OF_SQL」で検索してくる人がいる。。。。ってググるとこの日記が TOP に来てるやん。
ええと、「END_OF_SQL」ってなんか意味ありげな予約語に見えるかもしれないけど、違います。意味は無いです。
これは「ヒアドキュメント」という機能で、
例えば
としているのを
としても
でもいいわけである。
なお、ヒアドキュメントは「<」の数で
変数展開の規則が変わる言語があるとか、
PHP では @ は普通の文字だが
perl では @ は展開される変数の Prefix になるとか
あるので、かならず使用するもののヘルプ等を参照しましょう。
---
2009-6-12 追記・修正
SQL を記述したヒアドキュメントで変数展開することはSQLインジェクションの脆弱性につながる場合があるため、サンプルを変数展開がないものに差し替えました。
ええと、「END_OF_SQL」ってなんか意味ありげな予約語に見えるかもしれないけど、違います。意味は無いです。
これは「ヒアドキュメント」という機能で、
例えば
$SQL=<<End_Of_SQL
SELECT ’Hello’;
End_Of_SQL
としているのを
$SQL=<<End_STRING
SELECT ’Hello’;
End_STRING
としても
$SQL=<<OSHIMAIDAYO
SELECT ’Hello’;
OSHIMAIDAYO
でもいいわけである。
なお、ヒアドキュメントは「<」の数で
変数展開の規則が変わる言語があるとか、
PHP では @ は普通の文字だが
perl では @ は展開される変数の Prefix になるとか
あるので、かならず使用するもののヘルプ等を参照しましょう。
---
2009-6-12 追記・修正
SQL を記述したヒアドキュメントで変数展開することはSQLインジェクションの脆弱性につながる場合があるため、サンプルを変数展開がないものに差し替えました。
「AlEscargot」をやらせてみました。
2007年9月30日 コンピュータパラオに行っていたりしてだいぶ時間があいたけど、
http://diarynote.jp/d/10395/20070919.html
の続き。
手元で作ったやつで「AlEscargot」をやらせてみた。
確定とかあまりされずほとんどまるまる力技。
2時間以上かかったよ。。。
基本的にアクセスは
テーブル全部くっつけてから
抽出をおこなうようだから
「動的SQLによる数独の超高速解法」
(http://codezine.jp/a/article/aid/1629.aspx?p=1)
は使えないからなぁ。。。
http://diarynote.jp/d/10395/20070919.html
の続き。
手元で作ったやつで「AlEscargot」をやらせてみた。
確定とかあまりされずほとんどまるまる力技。
2時間以上かかったよ。。。
基本的にアクセスは
テーブル全部くっつけてから
抽出をおこなうようだから
「動的SQLによる数独の超高速解法」
(http://codezine.jp/a/article/aid/1629.aspx?p=1)
は使えないからなぁ。。。
「マシン語は必要か?」について
2007年9月21日 コンピュータなんか、「マシン語は必要か?」ってのが話題になってるらしい。
震源地はこれ==> http://d.hatena.ne.jp/shi3z/20070911
僕の答えは「必要」ですね。
「double-checked locking」の問題(http://www-06.ibm.com/jp/developerworks/java/020726/j_j-dcl.html)を理解するにはマシン語を理解できないとだめでしょう。
震源地はこれ==> http://d.hatena.ne.jp/shi3z/20070911
僕の答えは「必要」ですね。
「double-checked locking」の問題(http://www-06.ibm.com/jp/developerworks/java/020726/j_j-dcl.html)を理解するにはマシン語を理解できないとだめでしょう。
「動的SQLによる数独の超高速解法」
2007年9月19日 コンピュータあわわわわ。
http://www.miko.org/~naruto/Artifact/SUDOKU/SUDOKU.html
でもたもたしている間に(って1年以上放置なんだけどw)
こんな記事(http://codezine.jp/a/article/aid/1629.aspx?p=1)
が出てる(^^;
手元のAccesssファイルは問題を
解くとこまで作っているんだけどね。
あとで「AlEscargot」をやってみよう。
========
http://www.miko.org/~naruto/Artifact/Artifact_labo.html
http://diarynote.jp/d/10395/20060419.html
http://diarynote.jp/d/10395/20060425.html
http://diarynote.jp/d/10395/20060401.html
http://www.miko.org/~naruto/Artifact/SUDOKU/SUDOKU.html
でもたもたしている間に(って1年以上放置なんだけどw)
こんな記事(http://codezine.jp/a/article/aid/1629.aspx?p=1)
が出てる(^^;
手元のAccesssファイルは問題を
解くとこまで作っているんだけどね。
あとで「AlEscargot」をやってみよう。
========
http://www.miko.org/~naruto/Artifact/Artifact_labo.html
http://diarynote.jp/d/10395/20060419.html
http://diarynote.jp/d/10395/20060425.html
http://diarynote.jp/d/10395/20060401.html
一度は読んでおきたい日本文学100選
2007年9月4日 ゲーム
Video Game スパイク 2007/07/26 ¥3,990
出る前からほしいなと思っていて買ってきました。
いいかげんに飽きているポケモンをだらだらやりつづけるのもなんだったし。
さっと取り出して読めるので結構いいです。
とりあえず、青空文庫で読みかけて挫折した、
「ウホッ」な「蟹工船」(「イブセマスジー」とは読みません)
から読み始めました。
今は2作品目、「人間失格」を読んでます。
出る前からほしいなと思っていて買ってきました。
いいかげんに飽きているポケモンをだらだらやりつづけるのもなんだったし。
さっと取り出して読めるので結構いいです。
とりあえず、青空文庫で読みかけて挫折した、
「ウホッ」な「蟹工船」(「イブセマスジー」とは読みません)
から読み始めました。
今は2作品目、「人間失格」を読んでます。
ノートパソコンの液晶が割れた
2007年8月13日 コンピュータ会社から渡されたノートパソコン、今朝使おうと開いたら大きなしみが4つほど。
液晶が割れていた。
金曜日の満員電車のときだろうなぁ。。。
かばんに入れた、分厚い文庫本
「悪魔のミカタ666 (2) スコルピオン・テイル」
のせいで偏った力がかかったのだろう。
満員電車で液晶を割ったのは FM-R CARD のとき以来だ。
液晶が割れていた。
金曜日の満員電車のときだろうなぁ。。。
かばんに入れた、分厚い文庫本
「悪魔のミカタ666 (2) スコルピオン・テイル」
のせいで偏った力がかかったのだろう。
満員電車で液晶を割ったのは FM-R CARD のとき以来だ。
コメントをみる |

「ピアノの森」見てきました。
2007年8月12日 映画家内が「『はりぽた』見たい」と言った。
う〜ん、別に9月になっても見られるような。
それよりも。。。
「『ピアノの森』見に行こう。上映終わってしまいそうだから」
ってんで見に行きました。
いや、ものすごく面白かったです。こういう作品、大好き。
もっと評価されてもいいとおもうけどなぁ。。。
う〜ん、別に9月になっても見られるような。
それよりも。。。
「『ピアノの森』見に行こう。上映終わってしまいそうだから」
ってんで見に行きました。
いや、ものすごく面白かったです。こういう作品、大好き。
もっと評価されてもいいとおもうけどなぁ。。。
コメントをみる |

なんで「年金なんて納めなくていい」って人が当選しちゃうの?
2007年7月30日 日常どうしても当選させたくないな〜って人が2名いた(比例区)。
一人は落ちたが、もう一人は某政党で上位の当選。
はぁ。。。。
一人は落ちたが、もう一人は某政党で上位の当選。
はぁ。。。。
コメントをみる |

本の一行目を紹介するサイトがあるらしい。
2007年6月27日 読書
http://www6.ocn.ne.jp/%7Ekatoyuu/
http://japan.internet.com/busnews/20070626/7.html
で紹介されていた。
http://www.twitterlit.com/
<== これのためにあるサービス?
http://diarynote.jp/d/10395/20040929
http://japan.internet.com/busnews/20070626/7.html
で紹介されていた。
http://www.twitterlit.com/
<== これのためにあるサービス?
http://diarynote.jp/d/10395/20040929
「309」じゃなくって「300」だよ
2007年6月18日 映画「ポケモンの前売り券買わないとなぁ〜」と言ったら
家内が「そんなんより『309』が見たい」といった。
・・・それ、「300」だろ。
(ロゴがこんなんだから。http://wwws.warnerbros.co.jp/300/)
ちゅうわけで見てきました。
低予算B級って感じだったけど
まぁ、いい感じで楽しめました。
家内が「そんなんより『309』が見たい」といった。
・・・それ、「300」だろ。
(ロゴがこんなんだから。http://wwws.warnerbros.co.jp/300/)
ちゅうわけで見てきました。
低予算B級って感じだったけど
まぁ、いい感じで楽しめました。
コメントをみる |

蕨市市議選の結果をみたとき、
「なんでこんなに特定の二人の候補だけ得票が多いんだ?」
と思った。
おもろいからネタに書こうと今日見返したら、
その多かった候補の得票数に小数点以下の値があり、整数部より一回り小さく表示されるようになっていた。
姓が同一の候補だったから、按分された得票分だった。
・・引っかかった。。。。
---
2011年6月6日(追記編集)
昔の選挙結果のページへのリンク削除
今回も按分票がでているようなので小数点に注意。
按分票: http://ja.wikipedia.org/wiki/%E6%8C%89%E5%88%86%E7%A5%A8
なお、今はもう蕨市民ではありません。
「なんでこんなに特定の二人の候補だけ得票が多いんだ?」
と思った。
おもろいからネタに書こうと今日見返したら、
その多かった候補の得票数に小数点以下の値があり、整数部より一回り小さく表示されるようになっていた。
姓が同一の候補だったから、按分された得票分だった。
・・引っかかった。。。。
---
2011年6月6日(追記編集)
昔の選挙結果のページへのリンク削除
今回も按分票がでているようなので小数点に注意。
按分票: http://ja.wikipedia.org/wiki/%E6%8C%89%E5%88%86%E7%A5%A8
なお、今はもう蕨市民ではありません。
MCP 70-536 落ちた。
2007年4月28日 コンピュータ前日の話。
会社で MCP 70-551 「UPGRADE: MCAD Skills to MCPD Web Developer by Using the Microsoft .NET Framework」を受けた人が居た。
その人の成績表を見せてもらった。
・・・「70-536」?
70-528,70-536,70-547 と成績が出ていたのである。
「(MCAD もっていると)アップグレード試験だけでいいの?」っと叫ぶと「うん」と答えられた。
翌日に受ける試験の受験科目は変更できない。。。。
そういうわけで、不要な科目ながら「70-536」を受けることになった。
しかし、難しいらしいし、「70-536 受けとくほうがいい」ともアドバイスを受けた。
試験勉強をするが、範囲が広くてどこから手をつけていいやら。。。(前日からはじめるなぁ)
そういうわけで受けてきました。
グローバリゼーション周りは出ても大丈夫だと思ってたらぼろぼろだし、セキュリティ周りは勉強で理解しきれなかったし、
md5 もわからない、ロックまわりは勘違いする、サービスも分かってない、
で壊滅。。。
650点。勉強すれば受かるところまで持っていけるが、もう受けない。次は「70-551」(ただし、無謀)です。
会社で MCP 70-551 「UPGRADE: MCAD Skills to MCPD Web Developer by Using the Microsoft .NET Framework」を受けた人が居た。
その人の成績表を見せてもらった。
・・・「70-536」?
70-528,70-536,70-547 と成績が出ていたのである。
「(MCAD もっていると)アップグレード試験だけでいいの?」っと叫ぶと「うん」と答えられた。
翌日に受ける試験の受験科目は変更できない。。。。
そういうわけで、不要な科目ながら「70-536」を受けることになった。
しかし、難しいらしいし、「70-536 受けとくほうがいい」ともアドバイスを受けた。
試験勉強をするが、範囲が広くてどこから手をつけていいやら。。。(前日からはじめるなぁ)
そういうわけで受けてきました。
グローバリゼーション周りは出ても大丈夫だと思ってたらぼろぼろだし、セキュリティ周りは勉強で理解しきれなかったし、
md5 もわからない、ロックまわりは勘違いする、サービスも分かってない、
で壊滅。。。
650点。勉強すれば受かるところまで持っていけるが、もう受けない。次は「70-551」(ただし、無謀)です。
コメントをみる |
