按照字符的ascii码 一位一位的进行比较 通过ascii()函数可以查看字符的ascii码 select ascii('C') from dual;
不好意思, 2楼回复的函数有误, 正确是ASCII()
SELECT ASCII('f'),ASCII('C') FROM dual; 102 67
SQL> with t as( 2 select 'ffff' code from dual union all 3 select 'cs' from dual union all 4 select 'cs' from dual union all 5 select 'cs' from dual union all 6 select 'ffff' from dual union all 7 select 'cs' from dual 8 ) 9 select max(code) from t; /* MAX(CODE) --------- ffff */ SQL> with t as( 2 select 'ffff' code from dual union all 3 select 'cs' from dual union all 4 select 'cs' from dual union all 5 select 'cs' from dual union all 6 select 'ffff' from dual union all 7 select 'cs' from dual 8 ) 9 select min(code) from t; /* MIN(CODE) --------- cs */ SQL> select ascii('f'),ascii('c') from dual; /* ASCII('F') ASCII('C') ---------- ---------- 102 99 */ --102>99,所以max(code)返回'ffff',min(code)返回'cs'
一般而言字符串只比较第一个字母,max就是第一个字母最大的, 不过如果如下所示: ab ac ad 这个比较的结果就不清楚了。
通过ascii()函数可以查看字符的ascii码
select ascii('C') from dual;
正确是ASCII()
102 67
SQL> with t as(
2 select 'ffff' code from dual union all
3 select 'cs' from dual union all
4 select 'cs' from dual union all
5 select 'cs' from dual union all
6 select 'ffff' from dual union all
7 select 'cs' from dual
8 )
9 select max(code) from t;
/*
MAX(CODE)
---------
ffff
*/
SQL> with t as(
2 select 'ffff' code from dual union all
3 select 'cs' from dual union all
4 select 'cs' from dual union all
5 select 'cs' from dual union all
6 select 'ffff' from dual union all
7 select 'cs' from dual
8 )
9 select min(code) from t;
/*
MIN(CODE)
---------
cs
*/
SQL> select ascii('f'),ascii('c') from dual;
/*
ASCII('F') ASCII('C')
---------- ----------
102 99
*/
--102>99,所以max(code)返回'ffff',min(code)返回'cs'
不过如果如下所示:
ab
ac
ad
这个比较的结果就不清楚了。