問題ID:19563の正解の選択肢について
- フォーラムは新サイトへ移行しました。
- このフォーラムではゲスト投稿が禁止されています
問題ID:19563の正解の選択肢について
msg# 1
rm86choppa
投稿数: 1
苗字が「佐藤」で始まる従業員を検索するには、どの問い合わせを実行しますか(該当するものを全て選択して下さい)。
上の問題の正解で、「SELECT employee_id, employee_name FROM employees WHERE INSTR(employee_name, '佐藤') = 1;」のこちらが正解になるのがなぜかわかりません。イコールのあとが2であれば正解のような気がするのですが、認識間違ってるでしょうか?
上の問題の正解で、「SELECT employee_id, employee_name FROM employees WHERE INSTR(employee_name, '佐藤') = 1;」のこちらが正解になるのがなぜかわかりません。イコールのあとが2であれば正解のような気がするのですが、認識間違ってるでしょうか?
Re: 問題ID:19563の正解の選択肢について
msg# 1.1
arashi1977
居住地: 広島
投稿数: 1715
引用:INSTR() は、第2引数の文字列が第1引数の何文字目にあるかを返すので
・1が返る:1文字目(最初の文字から)マッチしている
・2が返る:2文字目(文字列の先頭は「佐藤」で始まらない、なにか1文字先頭にある)
ということになるんですね。
単純に関数を実行してみればわかります。Oracleではないですが、同じ機能を持つのでsqlite3でやってます。
「SELECT employee_id, employee_name FROM employees WHERE INSTR(employee_name, '佐藤') = 1;」のこちらが正解になるのがなぜかわかりません。イコールのあとが2であれば正解のような気がするのですが、認識間違ってるでしょうか?
・1が返る:1文字目(最初の文字から)マッチしている
・2が返る:2文字目(文字列の先頭は「佐藤」で始まらない、なにか1文字先頭にある)
ということになるんですね。
単純に関数を実行してみればわかります。Oracleではないですが、同じ機能を持つのでsqlite3でやってます。
$ sqlite3
SQLite version 3.28.0 2019-04-15 14:49:49
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> select instr('テスト文字列佐藤', '佐藤');
7 ←「テスト文字列」の6文字が先にあって、7文字目から「佐藤」がマッチする
sqlite> select instr('佐藤', '佐藤');
1 ←1文字目から「佐藤」にマッチする