2016/11/10

SQLのTRIM関数

全角スペースで挟まれた以下の文字列があるとします。


' abc '

もしSQLを使って
両側の全角スペースを削除したい(つまり、'abc'を取り出したい)と思った場合、
あなたならどうするでしょうか?

データベースが以下のいずれかであれば、
TRIM関数で簡単に'abc'を取り出すことができます。


(※オンライン実行環境の rextester.com で確認してみました。)

続きを読む

2016/10/11

ROW_NUMBER関数の代わり

ですます調で書いてみます。

OracleやSQL ServerやDB2では 行番号を取得するにはROW_NUMBER関数が使えて便利です。

AccessやSQLiteにはROW_NUMBER関数が実装されていないので、 行番号をとるときは工夫が必要なようです。 SQLで何とかできそうなのでやってみました。

続きを読む

2016/10/02

なぜ NOT NULL にしないのか?

どこかの誰かが作ったシステムを手直し(というか、ほぼ作り直し)することが業務上よくある。
そんな経験上、最も頻繁に思うことは


DBのテーブルのフィールドに NULL を許容することだけは絶対にやめてほしい


ということである。


経験の浅いプログラマは
NOT NULL制約を全く考慮せずにテーブルを作成してしまうか、
もしくはNULLでデータを管理しようとしてしまうことがある。
しかしNULLを許容することは百害あって一利なしなので、
是非ともフィールドに NOT NULL をつけてほしい。


以下はNULLの弊害を確認するための
MySqlでの実行例だが、
ほとんどのDBでも同じだろう。


ちなみにSQLを実行して試したければ、
以下のサイトがおすすめ。



続きを読む