173
图6-48 随机函数的调用 图6-49 select 语句与随机函数
bin()函数与oct()函数的参数须为整数;hex()函数的参数可以是数值型的数,也可以是字符串;ascii()函数的参数是一个字符。
使用select 语句显示这些函数的返回值时,返回值将自动转换为十进制数显示。例如,下面的select 语句的执行结果如图6-50所示。
select bin(2),oct(8),hex('中国
'),0xD6D0B9FA,ascii('b'),char(97,98),conv(16,2,16);
图6-50 二进制、十六进制函数的调用
6.3.2 字符串函数
MySQL 提供了非常多的字符串函数,为了便于读者学习,本书将字符串函数归纳为字符串基本信息函数、加密函数、字符串连接函数、修剪函数、子字符串操作函数、字符串复制函数、字符串比较函数以及字符串逆序函数等。
字符串函数在对字符串进行操作时,字符集、字符序的设置至关重要。同一个字符
串函数对同一个字符串进行操作时,如果字符集或者字符序设置不同,那么操作结果也可能不同。
1.字符串基本信息函数
字符串基本信息函数包括获取字符串字符集的函数、获取字符串长度以及获取字符串占用字节数的函数等。
(1)关于字符串字符集的函数。
charset(x)函数返回x 的字符集;collation(x)函数返回x 的字符序。例如,下面的select 语句的执行结果如图6-51所示。
select charset('中'), charset(0xD6D0),collation('中'),collation(0xD6D0),0xD6D0;
convert(x using charset)函数返回x 的charset 字符集数据(注意:x 的字符集没有变化)。例如,下面的select 语句的执行结果如图6-52所示,中文简体“中”转换为中文繁体时没有产生乱码,中文简体“国”转换为中文繁体时产生乱码。
set @s1 = '中国';
set @s2 = convert(@s1 using big5);
select @s1,charset(@s1),@s2,charset(@s2);
174
图6-51 获取字符串的字符集图6-52 字符集转换函数的调用
如果命令提示符窗口的字符集设置为其他非中文简体字符集(例如latin1),而数据库的字符集设置为中文简体字符集(例如gbk),为防止乱码问题,可以在命令提示符窗
口使用convert()函数将数据进行必要的字符集转换。
(2)获取字符串长度以及获取字符串占用的字节数函数。
char_length(x)函数用于获取字符串x的长度;length(x)函数用于获取字符串x占用的字节数。例如,下面的MySQL语句执行结果如图6-53所示。
set names latin1;
select char_length('中国'),length('中国'),char_length('中国China'),length('中国China');
set names gbk;
select char_length('中国'),length('中国'),char_length('中国China'),length('中国China');
MySQL字符集的设置将影响char_length(x)函数的运行结果。
图6-53 获取字符串长度及占用的字节数函数
2.加密函数
加密函数包括不可逆加密函数以及加密-解密函数。
(1)不可逆加密函数。
password(x)函数用于对x进行加密,默认返
回41位的加密字符串;md5(x)函数用于对x进行
加密,默认返回32位的加密字符串。例如,下面
字符串函数详解的select语句的执行结果如图6-54所示。
select password('中'),md5('中'),password('中'),md5('中
')\G
图6-54 不可逆加密函数的调用
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论