mysql cast和convert函数学习(将字符串转数字)

本文介绍了MySQL中用于类型转换的CAST()和CONVERT()函数的基本用法及示例。这两种函数可以将一种类型的值转换为另一种类型,如字符串转整数等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[size=medium][color=red][b]MySQL 的CAST()和CONVERT()函数可用来获取一个类型的值,并产生另一个类型的值。两者具体的语法如下:[/b][/color][/size]

CAST(value as type);

CONVERT(value, type);

就是CAST(xxx AS 类型), CONVERT(xxx,类型)。

可以转换的类型是有限制的。这个类型可以是以下值其中的一个:

二进制,同带binary前缀的效果 : BINARY
字符型,可带参数 : CHAR()
日期 : DATE
[b][color=red]时间: TIME[/color][/b]
日期时间型 : DATETIME
浮点数 : DECIMAL
[color=red][b]整数 : SIGNED [/b][/color]
无符号整数 : UNSIGNED

下面举几个例子:
mysql> SELECT CONVERT('23',SIGNED);
+----------------------+
| CONVERT('23',SIGNED) |
+----------------------+
| 23 |
+----------------------+
1 row in set (0.00 sec)


mysql> SELECT CAST('125.34edf342.83' AS SIGNED);
+-----------------------------------+
| CAST('125.34edf342.83' AS SIGNED) |
+-----------------------------------+
| 125 |
+-----------------------------------+
1 row in set, 1 warning (0.00 sec)


mysql> SELECT CAST('3.35' AS SIGNED);
+------------------------+
| CAST('3.35' AS SIGNED) |
+------------------------+
| 3 |
+------------------------+
1 row in set, 1 warning (0.00 sec)

mysql> SELECT CAST('45' AS SIGNED);
+----------------------+
| CAST('45' AS SIGNED) |
+----------------------+
| 45 |
+----------------------+
1 row in set (0.00 sec)
mysql> SELECT CAST('-45' AS SIGNED);
+-----------------------+
| CAST('-45' AS SIGNED) |
+-----------------------+
| -45 |
+-----------------------+
1 row in set (0.00 sec)
<think>嗯,用户想了解OracleMySQL字符串数字字符串日期的函数。我需要根据提供的引用资料来整理答案。首先,看看引用3,里面提到了Oracle的to_numberto_date,而MySQL用的是CONVERTCAST,还有str_to_date。引用4可能也涉及SUBSTR之类的函数,但这里用户关注的是函数,所以重点在引用3。 用户的问题分两部分:字符串数字字符串日期。对于Oracle,数字用TO_NUMBER,日期用TO_DATE。MySQL的话,数字可以用CONVERT或者CAST日期用STR_TO_DATE。需要具体语法例子,这样用户更容易理解。 还要注意比较两者的不同,比如函数名称参数格式的差异。例如Oracle的日期格式是'YYYY-MM-DD',而MySQL使用'%Y-%m-%d'这样的占位符。这些细节在换时容易出错,需要特别说明。 另外,用户可能在实际使用中遇到迁移问题,比如从Oracle导出的SQL脚本中的函数MySQL不兼容,这时候需要替换对应的函数,比如把TO_DATE换成STR_TO_DATE,并调整格式字符串。这点在引用2里提到过,可以引用一下。 确保回答结构清晰,分点列出每个数据库函数,并给出示例。最后,生成相关问题帮助用户深入理解。比如,日期换时的常见错误或者性能差异,这些可能都是用户后续会关心的问题。</think>### Oracle与MySQL字符串数字及日期的函数对比 #### 一、字符串数字函数 1. **Oracle** - **函数**:`TO_NUMBER(string)` - **示例**: ```sql SELECT TO_NUMBER('123.45') FROM DUAL; -- 返回数值123.45 ``` *说明*:将字符串换为数值类型,支持整数小数[^3]。 2. **MySQL** - **函数**: - `CONVERT(string, SIGNED)`(整数)或 `CONVERT(string, DECIMAL)`(浮点数) - `CAST(string AS SIGNED)` 或 `CAST(string AS DECIMAL)` - **示例**: ```sql SELECT CONVERT('12345', SIGNED); -- 返回整数12345 SELECT CAST('123.45' AS DECIMAL(10,2)); -- 返回浮点数123.45 ``` *说明*:`SIGNED`表示有符号整数,`DECIMAL`需指定精度。 --- #### 二、字符串日期函数 1. **Oracle** - **函数**:`TO_DATE(string, format)` - **示例**: ```sql SELECT TO_DATE('2023-11-28', 'YYYY-MM-DD') FROM DUAL; -- 返回日期类型值 ``` *说明*:格式参数需与字符串严格匹配,如`YYYY`表示四位年份,`MM`表示月份。 2. **MySQL** - **函数**:`STR_TO_DATE(string, format)` - **示例**: ```sql SELECT STR_TO_DATE('28-11-2023', '%d-%m-%Y'); -- 返回日期类型值 ``` *说明*:格式占位符使用`%`符号,如`%Y`为四位年份,`%d`为两位日期[^3][^2]。 --- #### 三、关键差异总结 1. **函数命名**: - Oracle使用`TO_NUMBER``TO_DATE`,MySQL使用`CONVERT`/`CAST``STR_TO_DATE`[^3][^4]。 2. **格式占位符**: - Oracle的日期格式为`YYYY-MM-DD`,MySQL需使用`%Y-%m-%d`等带`%`的占位符[^3][^2]。 3. **迁移注意事项**: - 从Oracle迁移到MySQL时,需替换`TO_DATE`为`STR_TO_DATE`并调整格式字符串[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值