プログラムメモ

ちょっとしたサンプルや備忘録的な何かをメモ。

sqlserver 大小文字の区別

SqlServerはデフォルトで大小文字を区別しないらしい。

no column1
1 XXX
2 xxx


select * from hoge where column1 = 'xxx'
だと両方拾ってしまう。

 

で、無理やり区別させるためにwhere句の最後にこのように追加する

 

select * from hoge where column1 = 'xxx'
COLLATE Japanese_CS_AS_KS_WS

 

と大小文字を区別するため、「xxx」の項目のみ取得できる。

 

ちなみに、以下のようなルールらしい。
・CI 大小文字を区別しない。
・CS 大小文字を区別する。
・AI アクセント、濁音、破裂音を区別しない。
・AS アクセント、濁音、破裂音を区別する。
・KS ひらがなとカタカナを区別する。半角でも区別する
・WS 文字幅(全角半角)を区別する。

 

sqlserver real型

SQL Serverにreal型なるものを発見。

調べてみるとfloat(24)と同じだそう。

値の範囲は
- 3.40E+38 ~ -1.18E-38、0、および 1.18E-38 ~ 3.40E+38
とのこと。

指数で書かれるといまいちよくわからん。

-3.4×10^-38~3.4×10^-38ってことであってるんだろうか?
あと、データストレージが4バイトってあるけど、この値だと4バイト超えてない??

asp.net TextBoxのReadOnlyプロパティ

TextBoxにReadOnlyプロパティを設定して、javascriptで無理やり値を設定しても
サーバ側に値が送信されずに消えてしまう、という現象が発生。

よくよく調べてみると、.netの仕様でReadOnlyのコントロールに設定された値は
前回のレスポンス返却時の値が適用されるらしい。

なので、正確に言うと、サーバ側に送信されてないのではなく
.netが値を無効にしているようだ。
ただし、Requestオブジェクトからは取得可能。

php switch文

phpのswitch文はdefaultは自動で通ってくれないらしい。

どういうことかというと

switch ($hoge) {
    case 0:
        echo "hoge is 0";
    case 1:
        echo "hoge is 1";
    case 2:
        echo "hoge is 2";
    default:
        echo "hoge is other";
}

breakが無い上記のswitch文で$hogeに0を設定しても
0→1→2と通って、defaultは通らずに抜けるみたい。

phpのdefaultは他のcaseにヒットしなかった場合のみ通過、とのこと。
VBはそもそもbreakがないし。。。。

switchの言語仕様ってややこしい。

 

asp.net テキストの値がクリアされない

TextBox1.Text = "";
をaspx.csで呼び出しても値がクリアされない現象が発生。

原因はPage_Initで呼び出していたため。
コントロールが初期化される前にPage_Initが実行される???

なんか良く分からないが、Page_Loadで処理を行うことで解決。