質問があります:
SELECT * FROM tb WHERE id=1
AND
sleep(CAST((SELECT 'a' REGEXP '^[n-z]') AS signed) * 15);
私はそれがどのように機能するかを理解しようとしています。
1)SELECT * FROM tb WHERE id = 1#これは簡単です説明は必要ありません
2) sleep(CAST((SELECT 'a' REGEXP '^[n-z]') AS signed) * 15);
#これは私にとって厄介な問題です。
私は物事が次のようになっていると信じています:(-> CAST((SELECT'a' REGEXP'^ [nz]')ASsigned)の結果に15を掛けたもの。
私の懸念は次のとおりです。
CASTは(たとえば文字列から日付に)変換する関数ですが、ここでは符号付き数値の文字列を変換するために使用されます。それは正しいですか?
REGEXPは、このように使用されていると思い
(SELECT 'a' REGEXP '^[n-z]')
ます。0(ゼロ)を返すため、15を掛けると常に0になります。ただし、(SELECT 'p' REGEXP '^[n-z]')
1を返すため、この場合、DBMSは15秒間スリープします。
したがって、最後の質問は次のとおりです。
- tbに「bob」という名前のレコードが1つしかない場合、データベースは15秒間一時停止しますか?