webhacking/sql, sql injection

mysql max,min함수

qkqhxla1 2014. 8. 31. 18:52

mysql에서 max,min함수를 자주 쓴다. 그런데 종종 헷갈릴 때가 있다. 


컬럼에 'aaa'와 'bcd'와 같이 길이가 같은 두개의 열이 있다고 하면..


max결과시 뭔가 예상했듯이 'bcd'가 결과로 나온다. 하지만...


'c' 'bcd' 두개의 열이 있고, max함수를 써보면 c가 결과값으로 나온다.




개발 경험이 없고 웹해킹에서만 쓰다 보니 그냥 길이가 긴게 우선인줄 알았는데 아니다.


길이가 같던 다르던, 앞에서부터 하나하나 비교하다가 더 뒤쪽의 아스키코드값이 나올경우 그게 


max값이다. 'bc'와 'bcd'가 있으면 bcd가 max이고, 'bd'와 'bcz'가 있으면 bd가 max이다. 


(길이는 상관없다.)


mysql> select * from contacts;

+------+-------+------+------+

|   num  |  name  |   addr |    priv |

+------+-------+------+------+

|       0 | bcdzz   | ra      | ha      |

|       0 | bcd      | ra      | ha      |

|       0 | bce      | ra      | ha      |

+------+-------+------+------+

3 rows in set (0.00 sec)


mysql> select max(name) from contacts;

+-----------+

| max(name)  |

+-----------+

| bce            |

+-----------+

1 row in set (0.00 sec)


그러므로 max로 쿼리 결과를 뽑아왔는데 나머지 쿼리들중에서 더 길이가 긴 값이 있을 수도 있다.


min도 거꾸로 생각해보면 마찬가지.



min인데 더 길이가 길 수도, max인데 더 길이가 짧을 수도 있다.

'webhacking > sql, sql injection' 카테고리의 다른 글

webhacking.kr 13번.  (2) 2014.09.04
rubiya.kr 20번.  (0) 2014.09.04
mysql 이상한 주석문  (0) 2014.08.31
webhacking.kr 9번.  (16) 2014.08.31
rubiya.kr 17번.  (0) 2014.08.30