MySQL类型转换和select相关函数

类型转换

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL 日期转换的常用函数有以下几种: 1. `DATE_FORMAT(date, format)`:将日期格式化为指定的格式。 ``` SELECT DATE_FORMAT('2021-06-01', '%Y-%m-%d'); -- 输出结果为:2021-06-01 ``` 2. `DATE(date)`:将日期时间值截取为日期部分。 ``` SELECT DATE('2021-06-01 12:34:56'); -- 输出结果为:2021-06-01 ``` 3. `TIME(time)`:将日期时间值截取为时间部分。 ``` SELECT TIME('2021-06-01 12:34:56'); -- 输出结果为:12:34:56 ``` 4. `YEAR(date)`:返回日期的年份部分。 ``` SELECT YEAR('2021-06-01'); -- 输出结果为:2021 ``` 5. `MONTH(date)`:返回日期的月份部分。 ``` SELECT MONTH('2021-06-01'); -- 输出结果为:6 ``` 6. `DAY(date)`:返回日期的日期部分。 ``` SELECT DAY('2021-06-01'); -- 输出结果为:1 ``` 7. `STR_TO_DATE(date_string, format_string)`:将字符串转换为日期。其中,`date_string` 是待转换的字符串,`format_string` 是日期格式字符串。 ``` SELECT STR_TO_DATE('2021-06-01', '%Y-%m-%d'); -- 输出结果为:2021-06-01 ``` 8. `DATE_ADD(date, INTERVAL value unit)`:在日期上增加或减少指定的时间间隔,其中 `date` 是日期,`value` 是时间间隔值,`unit` 是时间间隔单位。 ``` SELECT DATE_ADD('2021-06-01', INTERVAL 1 DAY); -- 输出结果为:2021-06-02 ``` 9. `DATE_SUB(date, INTERVAL value unit)`:在日期上减少指定的时间间隔,其中 `date` 是日期,`value` 是时间间隔值,`unit` 是时间间隔单位。 ``` SELECT DATE_SUB('2021-06-01', INTERVAL 1 DAY); -- 输出结果为:2021-05-31 ``` 这些函数可以通过组合使用来完成更复杂的日期转换操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值