= 이진탐색
ascii에서 출력 가능한 문자 범위는 32~126으로 중간값은 79로 지정해서 그 값보다 큰지 작은지 비교해서 범위를 다시 지정한다
select * from users where username='admin' and ascii(substr(password, 1, 1))>79;
+----------+----------+
| username | password |
+----------+----------+
| admin | P@ssword |
+----------+----------+
1 row in set (0.00 sec)
ASCII는 0부터 127 범위의 문자를 표현할 수 있으며, 이는 곧 7 개의 비트를 통해 하나의 문자를 나타낼 수 있다는 것을 의미한다.
그래서 1비트씩 1인지 비교하면 7번의 쿼리로 한 글자를 알아낼 수 있다.
MySQL에서는 숫자를 비트 형태로 변환하는 bin이라는 함수를 제공한다.
SELECT bin(ord('A'));
+---------------+
| bin(ord('A')) |
+---------------+
| 1000001 |
+---------------+
1 row in set (0.00 sec)