パンプキンスパイスラテ

IT系のことが多めの日記帳です

SQL

MySQLの設定によって、カラムの制限を越えたものを入れようとした時の挙動が異なる件

SQL

エラーになって処理が終わるか、制限値までカットされて保存されるか、の違い。 http://q.hatena.ne.jp/1184841779 http://dev.mysql.com/doc/refman/5.1/ja/constraint-invalid-data.html my.iniの、sql-modeの値をみればいいらしい。 5.0.2以降では、「STR…

SQL開発環境ソフトウェア-Common SQL Environment

SQL

Oracle、PostgreSQL、MySQLで開発するならコレ。SQL Serverも接続確認済み。 何故かODBC接続にしないとアプリごとエラーで落ちる>< 「Common SQL Environment ver1.59」はSQL開発環境ソフトウェアです。・SQLの編集・実行 ・レコードの新規作成・更新・削…

正規表現を使ってLIKEで検索する(SQL Server)

SQL

索引検索を作ってて、50音(あ〜ん)以外のものを取り出すSQL文をどうしようか悩んでた。 not like 'あ%' and not like 'い%' ・・・・ ってやるのは明らかに効率が悪いし、見た目も汚い。 調べてみたら正規表現で一発でできた!! select * from table wher…

相関サブクエリで連番を振る

SQL

SQLserver SQLserverで「rownum」が使えれば簡単なんだけど>< select ( select count(COLUMN) from TABLE_B as B where B.COLUMN <= A.COLUMN ) as Rank , * from TABLE_A as A order by Rank ASC ;

文字列の出現回数を調べる

SQL

SQLserver 検索結果を表示する際に、キーワードが文字列の中にいくつ含まれているか表示させたいなぁと思って、試行錯誤してみた。 はじめ、count()をサブクエリで使えるのかなと思って試してみたら、ダメでした。 次に patindex をうまく使えばできるんじゃ…

MySQLのUTF-8文字化け対策

SQL

MySQLで、データベースもプログラムソースもUTF-8なのに、日本語が「?」で文字化けしてしまう! そんな時の魔法の1行。 mysql_select_dbの後で、 mysql_query('SET NAMES \'utf8\'');とやれば、文字化けが直ります。助かった。

リスト形式のデータから一致検索

SQL

よく、「1,2,3,4,5」とリスト形式でデータを持ってるDBから、例えば「1」が含まれているものをSELECT文で読み込む、ってことがある。あまり考えずに、 SELECT * FROM テーブル名 WHERE カラム名 LIKE '%1%'; とやってしまうと、「2,3,11,12,13」などのデータ…

MySQLテーブルの内容を表示

SQL

DESCRIBE テーブル名; たったこれだけで良かったんだね。 いままでわざわざ、 SHOW COLUMNS FROM テーブル名; ってやってたよ。しかも昨日のエントリのINSERT文も、今日本屋でSQL本を立ち読みしたら最初のほうに載ってたよorz まだまだ勉強不足だなぁ。

INSERT時にカラムの最大値+1を持ってくる

SQL

AUTO INCREMENTを使えば済む話かもしれないけど、他のテーブルのカラムを参考にする場合などに役立つかも。ただ実際はTRANSACTIONでロックを掛けないとヤバイことになるので注意。【パターン1】◎推奨 INSERT INTO テーブルA (カラムA, カラムB, カラムC) SE…

重複してるものをまとめつつカウントするよ

SQL

DISTINCTってCOUNT()の中に入れてもいいんだね。知らなかった!つーか初歩ですか? SELECT COUNT(DISTINCT カラム名) AS カウント数 FROM テーブル名; これは覚えとくと結構便利かも。

SQLインジェクション対策を覚えた!

INSERT時 $query = sprintf( "INSERT INTO plan (title,date,delflg)VALUES('%s','%s''%s''%s',0)", mysql_real_escape_string($value_title), mysql_real_escape_string($value_date), mysql_real_escape_string($value_date_h), mysql_real_escape_string(…