类型转换
1.类型转换分为隐式转换和显式转换
示例: select 1=‘1’; 在这种情况就会发生类型转换,数字等于字符串,数据库在内部发生隐式转换
2.类型转换大部分发生在两种情况下
1)在select的where条件里面,一般是列与常量进行比较时,两者的数据类型不一样会发生类型转换。例如:字符串=数字 就会发生类型转换
2)在insert into 语句中,也容易发生数据类型的不一致而导致的类型转换。例如:t1有两个列,一个是id,一个是name,执行insert into t1 values(‘1’,’abc’);会发生类型转换,因为id列是数字,插入字符时,就会发生类型转换(补充:单引号里面的都是字符串)
上述两种情况都属于隐私类型转换
3.隐式类型转换又分为有害转换和无害转换,不管是哪一种,我们都要尽量不要发生隐式的类型转换
如何避免发生隐式转换呢?
1)在创建表定义列时,需要定义好列的数据类型
数字:int
字符串:varchar
日期:date
2)在执行select和insert语句时,对于常量来说:数字类型不要加引号;字符串类型一定 要加上引号;日期类型可以加上引号,也可以不加,最好是加上
cast函数
1.作用是将任意类型的表达式转换为指定类型的值(也就是显示转换),指定类型可以是以下任意类型的值
BINARY:二进制字符串
CHAR:字符串
DATE:日期 注:格式要匹配
DATETIME:日期函数
DECIMAL:浮点数
SIGNED:有符号整数
TIME:时间
UNSIGNED:无符号整数
2.常用语法:
1)cast(id as char) ##将id列转换为字符串类型
示例语句:select cast(id as char) from t1; ##将t1表中id列转为字符串类型
2)cast(123 as char) ##将常量123转换为字符串类型
示例语句:explain select * from t1 where name=cast(123 as char); #将123常量转为字符串,显示索引等信息
NULL值处理函数
IFNULL函数
如果一个列是空值,使用ifnull函数,可以指定null的显示名称
示例:select PLAYERNO,ifnull(LEAGUENO,’NO LEAGUENO’) from PLAYERS; ##显示 PLAYERNO列和LEAGU