カテゴリー
SugiBlog Webエンジニアのためのお役立ちTips

MySQL IN句とFIND_IN_SET関数

MySQLの抽出条件の指定方法としてIN句とFIND_IN_SET関数というものがあります。
その具体的な使用方法をご紹介します。

サンプルとしてテーブル「sample」を用意します。

mysql> select * from `sample`;
+----+--------+------+
| id | name   | type |
+----+--------+------+
| 1  | 赤井   | 1    |
| 2  | 井田   | 2    |
| 3  | 宇野   | 3    |
| 4  | 江崎   | 1    |
| 5  | 奥本   | 2    |
+----+--------+------+

IN句

例えば、idが1・2・4のデータを取得したいとき、
IN句を使うとこのように抽出することができます。

SELECT * FROM sample WHERE id IN (1, 2, 4);

結果は以下のようになります。

+----+--------+------+
| id | name   | type |
+----+--------+------+
| 1  | 赤井   | 1    |
| 2  | 井田   | 2    |
| 4  | 江崎   | 1    |
+----+--------+------+

FIND_IN_SET関数

IN句のときと同様にidが1・2・4のデータを取得してみましょう。

SELECT * FROM sample WHERE FIND_IN_SET(id, '1,2,4');

こちらも結果はIN句を使ったときと同じ結果になります。

続きを読む…»

3,016 views

MySQLの日付関数 22選

MySQLで使用できる日付の加算や減算等の関数をご紹介します。

現在の日付を返す CURDATE()

現在の日付を返します。
CURRENT_DATE(), CURRENT_DATEはCURDATE()のシノニムです。

mysql> SELECT CURDATE();
        -> '2008-06-13'
mysql> SELECT CURDATE() + 0;
        -> 20080613

日付部分を抽出する DATE()

書式:DATE(expr)
日付exprの日付部分を抽出します。

mysql> SELECT DATE('2003-12-31 01:02:03');
        -> '2003-12-31'

日付の加算 DATE_ADD()

書式:DATE_ADD(date, INTERVAL expr unit)
日付値に時間値 (間隔) を加算します。
ADDDATE()DATE_ADD()のシノニムです。

unit…YEAR,MONTH,DAY等

mysql> SELECT DATE_ADD('2008-01-02', INTERVAL 31 DAY);
        -> '2008-02-02'
mysql> SELECT ADDDATE('2008-01-02', INTERVAL 31 DAY);
        -> '2008-02-02'

日付を指定された書式に設定 DATE_FORMAT()

書式:DATE_FORMAT(date, format)
日付を指定された書式に設定します。

mysql> SELECT DATE_FORMAT('2009-10-04 22:23:00', '%W %M %Y');
        -> 'Sunday October 2009'
mysql> SELECT DATE_FORMAT('2007-10-04 22:23:00', '%H:%i:%s');
        -> '22:23:00'
mysql> SELECT DATE_FORMAT('1900-10-04 22:23:00', '%D %y %a %d %m %b %j');
        -> '4th 00 Thu 04 10 Oct 277'
mysql> SELECT DATE_FORMAT('1997-10-04 22:23:00', '%H %k %I %r %T %S %w');
        -> '22 22 10 10:23:00 PM 22:23:00 00 6'
mysql> SELECT DATE_FORMAT('1999-01-01', '%X %V');
        -> '1998 52'
mysql> SELECT DATE_FORMAT('2006-06-00', '%d');
        -> '00'

日付の減算 DATE_SUB()

書式:DATE_SUB(date, INTERVAL expr unit)
日付から時間値 (間隔) を引きます。
SUBDATE()DATE_SUB()のシノニムです。

mysql> SELECT DATE_SUB('2005-01-01 00:00:00', INTERVAL '1 1:1:1' DAY_SECOND);
        -> '2004-12-30 22:58:59'
mysql> SELECT DATE_SUB('1998-01-02', INTERVAL 31 DAY);
        -> '1997-12-02'

続きを読む…»

953 views

jQueryでチェックボックスの全選択・全解除を実装する

jQueryでチェックボックスの全選択、及び全解除の仕組みを実装する方法をご紹介します。
jQueryを使いますので、jQueryの読み込みを忘れないようにしてください。

以下のようなHTMLがあったとします。

<input type="checkbox" name="all_check">全選択

<input type="checkbox" name="check[]" value="">a
<input type="checkbox" name="check[]" value="">b
<input type="checkbox" name="check[]" value="">c
<input type="checkbox" name="check[]" value="">d
<input type="checkbox" name="check[]" value="">e
<input type="checkbox" name="check[]" value="">f

まずは全選択のチェックボックスにチェックを入れると全てのチェックボックスにチェックが入るようにしましょう。

$('input[name="all_check"]').on('click',function() {
    $('input[name="check[]"]').prop('checked', this.checked);
});

次に、各チェックボックスのクリックイベントを設定し、チェックの状況によって全選択のチェック状態を変更するように仕組みます。
チェックボックスの数とチェックされたチェックボックスの数を比較して、同じであれば(全てチェックされていれば)全選択にもチェックを入れます。
どれか1つでもチェックが外れれば全選択のチェックは解除します。

$('input[name="check[]"]').on('click',function(){
    if($('input[name="check[]"]:checked').length == $('input[name="check[]"]').length ) {
        $('input[name="all_check"]').prop('checked', true);
    } else {
        $('input[name="all_check"]').prop('checked', false);
    }
});

if文を使わずに1行で書くこともできます。

$('input[name="check[]"]').on('click',function(){
    $('input[name="all_check"]').prop('checked', ($('input[name="check[]"]:checked').length == $('input[name="check[]"]').length));
});
1,539 views

CSSで変数として使える便利なカスタムプロパティ

CSS変数やカスケード変数とも呼ばれることもあるカスタムプロパティ。
変数のように使えるので何かと便利です。

カスタムプロパティはハイフン2つで始まる名前とプロパティ値を設定します。

基本的な文法はこのようになります。

element {
    --main-bg-color: brown;
}

よく使われる方法はカスタムプロパティを:root擬似クラスで定義することで、HTML全体で使用することが可能になります。

:root {
    --main-bg-color: brown;
}

カスタムプロパティの名前は大文字小文字が区別されます。

実際に使用するときはこのようになります。

element {
    background-color: var(--main-bg-color);
}

また、指定された変数が定義されていない場合の代替値を指定することができます。

element {
    background-color: var(--main-bg-color, black);
    /* --main-bg-colorが定義されていなければblack */
}

カスタムプロパティを活用すれば共通で設定するようなプロパティで使用し、デザイン変更等の効率を上げることができます。
例えば色指定関係をまとめておけば、変更したいときに全て書き換えるという手間が省けますね。

321 views

Microsoft Office 2021を入れてみた

Microsoft Office 2021をインストールしてみました。
これまでPC移行とか散々やってきたので、作業には慣れています。

で、またOutlookのデータを移行しないとな…と思っていたら…、
特に何もすることがなかった!
アカウント設定・仕分けルール・署名など、全てそのまま使うことができました。

なんということでしょう。
面倒だな、と思っていた作業が省けたのでうれしい限りです。

ただ、1つだけやらないといけなかったことがありました。
IMAPで設定しているアカウントの受信トレイが何も表示されない状態だったので、調べて設定を変更しました。

ちなみにアップグレードはMicrosoft Office 2010 Personal(古すぎ;)からMicrosoft Office Home & Business 2021です。

【設定方法】

  1. IMAPアカウントの設定を開く
  2. [フォルダー設定]の[ルートフォルダーのパス]にinboxと入力
  3. [次へ]をクリックして設定を完了

これでIMAPアカウントの受信トレイでメールが表示されるようになりました。

756 views