上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[SQL] NULLの比較について

以下のようなテーブル(TEST_TBL)があるとします。



で、このテーブルの 'A_CODE' が空(NULL)のデータを
抽出したいとします。

SELECT * FROM TEST_TBL
WHERE A_CODE = NULL

このように "= NULL" で比較するのはNG。
結果は1件も抽出されません。

NULLはイコールで比較できないんですね。


ということで、以下のように "IS NULL" を使います。

SELECT * FROM TEST_TBL
WHERE A_CODE IS NULL



ちゃんとNULLのレコードが抽出できました。



ちなみに、以下の方法で "=" を使用してNULLのものを
抽出できそうですが、問題がちらほらとあります。

SELECT * FROM TEST_TBL
WHERE NVL(A_CODE, 'NULL') = 'NULL'

問題点は、もし "A_CODE" に 'NULL' という文字列の
データが入っていたら、抽出されてしまう。
あとは、WHERE句でNVL関数を使用してしまっているため、
インデックスは有効にならず、全表走査してしまうので
パフォーマンスが悪くなる。


ということで、やっぱり "IS NULL" での判定がいいのですな。










[TortoiseSVN] 日本語化してみた

Subversion のクライアントとして、すごく便利な TortoiseSVN
インストールして、英語表示のまま使っていたけど
定番の操作以外では、英語の理解力不足か期待通りの処理してくれるか、
不安が・・・・

ということで、日本語化してみた。


まず、日本語化するには LanguagePack というのが必要なので、
TortoiseSVN」のサイトからダウンロード。




「18 Japanese」が日本語ですね。


ダウンロードしたインストーラの「LanguagePack_1.7.11.23600-win32-ja.msi」を実行します。


japanese2013217_1.png
「次へ」を押下でインストールが始まります。

japanese2013217_2.png

japanese2013217_3.png

「完了」を押下します。
この時点では、まだ英語表示ですので、Settingから言語変更します。

japanese2013217_4.png

japanese2013217_5.png

最初、Languageの日本語を選択しようとしたら、Englishしかった。
TortoiseSVNのバージョンが古かったことが原因のようで、
最新版にアップデートしたら、日本語も選択肢に出てきた。

日本語を選択して適用を押下。

japanese2013217_6.png

無事、日本語になりました!!




[Android] ListViewをタッチして指をずらすと色が反転するのを回避

ListViewのアイテムを選択しようとしてタッチしたとき、
そのままタッチしたまま指をずらしたら、ListView全体の色が
反転してしまった。。。

ListViewで画面全体を使用していれば、あまり違和感は無いのだろうが、
画面の一部に埋め込んでいるような場合、見た目もすごいおかしい。

とにかく、見た目が変なのでとりあえず回避方法。


■Javaのコードに指定する場合

ListView listView;
listView.setScrollingCacheEnabled(false)
  ※listViewにはListViewのインスタンスを入れとく

■XMLのレイアウト側に指定する場合
android:scrollingCache="false"


これで背景色が反転しなくなりました。


フォーカスが当たってしまっただけかと思って、
setFocusable(false)
など試してみましたが、こちらは解決できずでした。


[Java] サイズを指定して文字列の後ろに空白を入れる

文字列の前後に付いてる空白を取りたい場合は、String.trim()で除去することができますが、逆に空白をつけたい場合はどうすればいいのか検討してみた。

Stringクラスのメソッドに要件を満たしてくれるのはどうやらなさそう。。。
自前でメソッド(処理)を用意するしかなさそうなので、作成してメモを残しときます。

■作成したメソッド

/**
* 文字列の後ろに半角スペースを付与
* 引数で渡された文字列の後ろに、半角スペースを挿入して、

* 引数で指定した長さの文字列に変換する。

*
* @param str 文字列
* @param size 半角スペースを付け加えた文字列の長さ
* @return 半角スペースを付け加えた文字列
*/
private static String rightPad(String str, int size) {
StringBuilder sb = new StringBuilder();

sb.append(str);

for (int i = str.length(); i < size; i++) {
sb.append(" ");
}

return sb.toString();
}


単純にループして半角スペースを追加しているだけです。


■使用サンプル
以下のように使用すると、「abc」+半角スペースで10文字に変換するため、「abc」と「def」の間に半角スペースが7文字入ります。

public static void main(String[] args) {
String out;

StringBuilder sb = new StringBuilder();

String s1 = "abc";
String s2 = "def";

sb.append(rightPad(s1, 10));
sb.append(s2);

out = sb.toString();
System.out.println("出力:" + out);
}


コンソールには以下のように出力される。
-----------
出力:abc def
-----------



StringのUtilクラスなどに入れておけば、役に立つときがあるかな。




プロフィール

hiiro

Author:hiiro

最新記事
カテゴリ
月別アーカイブ
最新コメント
最新トラックバック
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
Counter
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。