MW211 EXIT

devlog
PHP/array_unique()にはarray_merge()を
2012年06月04日
┌──────────────────────────────────────┐
│array_unique($配列)                                                         │
└──────────────────────────────────────┘
だけだとキーが歯抜けになる

でも、さらにこうすると
┌──────────────────────────────────────┐
│array_merge(array_unique($配列));                                           │
└──────────────────────────────────────┘
前詰になる。
分類:PHP配列
PHP/list()の反対はarray()
2012年06月03日
┌──────────────────────────────────────┐
│list($a, $b, $c) = array($a, $b, $c);                                       │
└──────────────────────────────────────┘
だね。
分類:PHP配列
PHP/foreach文の誤記(?)
2012年06月01日
┌──────────────────────────────────────┐
│foreach($data as $value) {                                                  │
│  if ($value) {                                                             │
│    echo $value;                                                            │
│  }                                                                         │
│}                                                                           │
└──────────────────────────────────────┘
普通はこんな感じで書く、foreach文を以下のようにも書けるらしい。
┌──────────────────────────────────────┐
│foreach($data as $value):                                                   │
│  if ($value) {                                                             │
│    echo $value;                                                            │
│  }                                                                         │
│endforeach;                                                                 │
└──────────────────────────────────────┘

先日、意図せずしてこんな感じで書いてしまったら動いていた。
(エラーにならないので気づかなかった)
┌──────────────────────────────────────┐
│foreach($data as $value)                                                    │
│if ($value) {                                                               │
│  echo $value;                                                              │
│}                                                                           │
└──────────────────────────────────────┘

ま、以下みたいなもんなんだろうけど、「;」がないif文だからなんかややこしい。
┌──────────────────────────────────────┐
│if ($value)                                                                 │
│  echo $value;                                                              │
└──────────────────────────────────────┘
分類:PHP
PostgreSQL/0を除く最小値(2)
2012年05月30日
ということで、NULLを含む列についての0を除く最小値を求める方法。
┌──────────────────────────────────────┐
│SELECT CASE                                                                 │
│           WHEN MIN(列) IS NULL THEN NULL                                   │
│           ELSE                                                             │
│               COALESCE(MIN(CASE                                            │
│                                WHEN 列 = 0 THEN NULL                       │
│                                ELSE             列                         │
│                            END), 0)                                        │
│       END AS 列                                                            │
│    FROM 表                                                                 │
│    GROUP BY キー                                                           │
└──────────────────────────────────────┘
ちと条件分岐が強引か。。。

すべてNULLならNULL、1以上を一つでも含んでいればその最小値、
さもなくば0となる。(なんか初心者のような条件分岐の説明だなぁ)

とにかくやりたいことは満たせるはず。

ちなみに、すべてNULLを判定する式は一般的にはCOUNT()を使うのが自然かも。
┌──────────────────────────────────────┐
│SELECT CASE                                                                 │
│           WHEN COUNT(列) = 0 THEN NULL                                     │
│           ELSE                                                             │
│               COALESCE(MIN(CASE                                            │
│                                WHEN 列 = 0 THEN NULL                       │
│                                ELSE             列                         │
│                            END), 0)                                        │
│       END AS 列                                                            │
│    FROM 表                                                                 │
│    GROUP BY キー                                                           │
└──────────────────────────────────────┘
ま、意図するところを伝えるのなら前出のMIN()の方がわかりやすいかな。
分類:PostgreSQL
PostgreSQL/0を除く最小値(1)
2012年05月29日
0を除く最小値を求める方法。
┌──────────────────────────────────────┐
│SELECT COALESCE(MIN(CASE                                                    │
│                        WHEN 列 = 0 THEN NULL                               │
│                        ELSE             列                                 │
│                    END), 0) AS 列                                          │
│    FROM 表                                                                 │
│    GROUP BY キー                                                           │
└──────────────────────────────────────┘
ただし、NOT NULL制約の列にしか使えない。。。
分類:PostgreSQL
SQL/NULLと条件式
2012年05月28日
列がNULLだった場合、以下には該当しない。
┌──────────────────────────────────────┐
│SELECT * FROM 表 WHERE 列 > 0;                                              │
└──────────────────────────────────────┘
これはわかる気がする。

で、ほぼ反対の以下にも該当しない。
┌──────────────────────────────────────┐
│SELECT * FROM 表 WHERE 列 < 1;                                              │
└──────────────────────────────────────┘
つまり、0ではない。これもわかる。

そして、最初の正反対である以下にも該当しない。
┌──────────────────────────────────────┐
│SELECT * FROM 表 WHERE NOT(列 > 0);                                         │
└──────────────────────────────────────┘
もう、何にも該当しないみたい。

つまり、これでも該当なし。
┌──────────────────────────────────────┐
│SELECT * FROM 表 WHERE (列 > 0) OR  (NOT(列 > 0));                          │
└──────────────────────────────────────┘

NULLについては、WHERE句に列を指定した時点で負けみたいだね。
分類:SQL
PostgreSQL/関数実行
2012年05月27日
pgAdminとかでSQL文を発行して関数を実行する方法
┌──────────────────────────────────────┐
│SELECT 関数();                                                              │
└──────────────────────────────────────┘
え?SELECT?
分類:PostgreSQL
PHP/private宣言忘れ
2012年05月23日
┌──────────────────────────────────────┐
│class クラス {                                                              │
│  private $変数;                                                            │
│  public function メソッド() {                                              │
│    $this->変数 = '値';                                                     │
│  }                                                                         │
│}                                                                           │
└──────────────────────────────────────┘
「$this->変数」の場合、「public」や「private」が宣言されていないと
エラー(Notice)になる…、と思っていたのだが、参照(echoとか)は確かにエラーとなる。
しかし、代入する分にはエラーとならない。
┌──────────────────────────────────────┐
│class クラス {                                                              │
│//private $変数;                                                            │
│  public function メソッド() {                                              │
│    $this->変数 = '値';                                                     │
│  }                                                                         │
│}                                                                           │
└──────────────────────────────────────┘
しかも、代入して以降は参照もできてしまう。
なんと、外部からも参照できてしまうのだ。
つまり、下記のようにpublic宣言したのと同じような動きとなるわけだ。
┌──────────────────────────────────────┐
│class クラス {                                                              │
│  public $変数;                                                             │
│  public function メソッド() {                                              │
│    $this->変数 = '値';                                                     │
│  }                                                                         │
│}                                                                           │
└──────────────────────────────────────┘
てっきり、エラー(Notice)で警告してくれるものだとばかり思っていたから
かなり意外だった(気をつけなければ)。
分類:PHP
(無題)
2012年05月22日
Go Fu Fu No Hi
PostgreSQL/地域の設定
2012年05月21日
「CREATE DATABASE」を行う時、以下を指定することにより地域を設定できる。
┌──────┬─────────┐
│LC_COLLATE  │並替順            │
├──────┼─────────┤
│LC_CTYPE    │大文字小文字の区別│
├──────┼─────────┤
│LC_MESSAGES │メッセージ        │
├──────┼─────────┤
│LC_MONETARY │通貨書式          │
├──────┼─────────┤
│LC_NUMERIC  │数字書式          │
├──────┼─────────┤
│LC_TIME     │日時書式          │
└──────┴─────────┘
「C」を設定すると、地域を設定しないのと同等になる。

「ja」(日本語)とかを設定すると、並替など、
その言語(日本語)に特化した機能となるが、その分遅かったり、
他言語には影響がなかったりする。

とりあえず「C」(設定なし)としておく方が無難か。
分類:PostgreSQL
前へ 1 … 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 … 156 次へ