次の SQL の結果は?(code は 'abc', 'ac', 'abbc', 'axc' の 4 行)
SELECT COUNT(*) AS n FROM t WHERE code LIKE 'a_c';正答
- 3
- 4
- 1
- 2
解説
LIKE の _ はちょうど 1 文字に一致するワイルドカードで、'a_c' は「a、任意の 1 文字、c」の 3 文字にだけ一致する。'abc' と 'axc' は一致するが、'ac' は 2 文字なので間の 1 文字が無く不一致、'abbc' は 4 文字で不一致。選択肢 2 の 4 は _ を % と同じ「0 文字以上」と誤解した結果で、0 文字以上に一致させたいなら 'a%c' と書く。
参考: www.sqlite.org
この問題を含む SQL のテストを制限時間つきで解く
SQLクイズへ