mysql cast as_Mysql SQL CAST()函数

(1).CAST()函数的参数是一个表达式,它包括用AS关键字分隔的源值和目标数据类型。以下例子用于将文本字符串'12'转换为整型:

SELECT CAST('12' AS int)

(2).返回值是整型值12。如果试图将一个代表小数的字符串转换为整型值,又会出现什么情况呢?

SELECT CAST('12.5' AS int)

(3).CAST()函数和CONVERT()函数都不能执行四舍五入或截断操作。由于12.5不能用int数据类型来表示,所以对这个函数调用将产生一个错误:

Server: Msg 245, Level 16, State 1, Line 1

Syntax error converting the varchar value

'12.5' to a column of data type int.

(4). 要返回一个合法的数值,就必须使用能处理这个值的数据类型。对于这个例子,存在多个可用的数据类型。如果通过CAST()函数将这个值转换为 decimal类型,需要首先定义decimal值的精度与小数位数。在本例中,精度与小数位数分别为9 与2。精度是总的数字位数,包括小数点左边和右边位数的总和。而小数位数是小数点右边的位数。这表示本例能够支持的最大的整数值是9999999,而最小 的小数是0.01。

SELECT CAST('12.5' AS decimal(9,2))

decimal数据类型在结果网格中将显示有效小数位: 12.50

(5).精度和小数位数的默认值分别是18与0。如果在decimal类型中不提供这两个值,SQL Server将截断数字的小数部分,而不会产生错误。

SELECT CAST('12.5' AS decimal)

结果是一个整数值:12

(6).在表的数据中转换数据类型是很简单的。下面的例子使用Product表,首先执行如下查询:

SELECT ProductNumber, ProductLine, ProductModelID

FROM Production.Product

ProductSubCategoryID < 4

(7). 假定产品经理已经创建了一个系统,用于唯一地标识生产出来的每辆自行车,以便跟踪其型号、类型和类别。他决定合并产品号、产品生产线标识符、产品型号标识 符和一个顺序号,为生产出来的每辆自行车创建一个唯一的序列号。在这个过程的第一步,他要求提供包括除顺序号之外的所有属性的所有可能产品的根标识符。

如果使用下面的表达式,就不能得到希望的结果,如图6-2所示。

1.SELECT ProductNumber

2.+ '-'

3.+ ProductLine

4.+ '-'

5.+ ProductModelID AS BikeSerialNum

6.FROM Production.Product

7.WHERE ProductSubCategoryID < 4

我 们没有得到希望的结果,而得到了有点奇怪的错误消息:请把nvarchar值转换为 int。因为之前我们没有要求进行任何转换,所以这个错误很奇怪。这个查询的问题在于我们试图利用第一个连接符来连接字符值ProductNumber, 利用第二个连接符连接另一个字符值ProductLine,最后连接的是ProductModelID字符值(它是一个整数)。

查询引擎会把连接符当成一个数学运算符,而不是一个字符。不管结果是什么,都需要更正这个表达式,以确保使用正确的数据类型。以下表达式执行了必要的类型转换,返回如图6-3所示的结果:

SELECT ProductNumber

+ '-'

+ ProductLine

+ '-'

+ CAST(ProductModelID AS char(4)) AS BikeSerialNum

FROM Production.Product

WHERE ProductSubCategoryID < 4

如果把整型值转换为字符类型就不会增加多余的空格了。查询引擎将把这些值用加号和连接符组合在一起,进行字符串连接运算,而不是和前面的数值进行加法或者减法运算了。

-------------------------------------------

MySQL 的CAST()和CONVERT()函数可用来获取一个类型的值,并产生另一个类型的值。两者具体的语法如下:

1

CAST(valueas type);

2

CONVERT(value, type);

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

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

二进制,同带binary前缀的效果 : BINARY

字符型,可带参数 : CHAR()

日期 : DATE

时间: TIME

日期时间型 : DATETIME

浮点数 : DECIMAL

整数 : SIGNED

无符号整数 : UNSIGNED

下面举几个例子:

例一

1

mysql>SELECT CONVERT('23',SIGNED);

2

+----------------------+

3

|CONVERT('23',SIGNED) |

4

+----------------------+

5

|                   23 |

6

+----------------------+

7

1 rowin set

例二

1

mysql>SELECT CAST('125e342.83' AS signed);

2

+------------------------------+

3

|CAST('125e342.83' AS signed) |

4

+------------------------------+

5

|                          125 |

6

+------------------------------+

7

1 rowin set

例三

1

mysql>SELECT CAST('3.35' AS signed);

2

+------------------------+

3

|CAST('3.35' AS signed) |

4

+------------------------+

5

|                      3 |

6

+------------------------+

7

1 rowin set

像上面例子一样,将varchar 转为int 用 cast(a as signed),其中a为varchar类型的字符串。

例4

在SQL Server中,下面的代码演示了datetime变量中,仅包含单纯的日期和单纯的时间时,日期存储的十六进制存储表示结果。

01

DECLARE @dt datetime

02

03

--单纯的日期

04

SET @dt='1900-1-2'

05

SELECT CAST(@dtas binary(8))

06

--结果: 0x0000000100000000

07

08

--单纯的时间

09

SET @dt='00:00:01'

10

SELECT CAST(@dtas binary(8))

11

--结果: 0x000000000000012C

MySQL的类型转换和SQL Server一样,就是类型参数有点点不同:CAST(xxx AS 类型) , CONVERT(xxx,类型)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
由于 SQL Server 和 MySQL 之间的函数在语法和功能上存在差异,因此不能简单地将 SQL Server 函数直接转换为 MySQL 函数。以下是一些常见的 SQL Server 函数和其在 MySQL 中的等效函数: 1. CONVERT SQL Server 中的 CONVERT 函数用于将一个数据类型转换为另一个数据类型。在 MySQL 中,可以使用 CAST 函数来完成相同的操作。例如,将一个字符串转换为日期: SQL Server:CONVERT(DATETIME, '2022-01-01') MySQLCAST('2022-01-01' AS DATE) 2. DATEADD SQL Server 中的 DATEADD 函数用于将日期加上一定的时间间隔。在 MySQL 中,可以使用 DATE_ADD 函数完成相同的操作。例如,将一个日期加上一个月: SQL Server:DATEADD(MONTH, 1, '2022-01-01') MySQL:DATE_ADD('2022-01-01', INTERVAL 1 MONTH) 3. LEN SQL Server 中的 LEN 函数用于返回一个字符串的长度。在 MySQL 中,可以使用 LENGTH 函数完成相同的操作。例如,获取一个字符串的长度: SQL Server:LEN('hello') MySQL:LENGTH('hello') 4. GETDATE SQL Server 中的 GETDATE 函数用于返回当前日期和时间。在 MySQL 中,可以使用 NOW 函数完成相同的操作。例如,获取当前日期和时间: SQL Server:GETDATE() MySQL:NOW() 5. SUBSTRING SQL Server 中的 SUBSTRING 函数用于返回一个字符串的子串。在 MySQL 中,可以使用 SUBSTRING 函数完成相同的操作。例如,获取一个字符串的前三个字符: SQL Server:SUBSTRING('hello', 1, 3) MySQL:SUBSTRING('hello', 1, 3) 需要注意的是,SQL Server 和 MySQL 在 SUBSTRING 函数的语法上有所区别。SQL Server 的 SUBSTRING 函数接受三个参数:要从中提取子串的字符串、子串的起始位置和子串的长度。而 MySQL 的 SUBSTRING 函数接受两个参数:要从中提取子串的字符串和子串的起始位置。如果要提取的子串长度不确定,则可以将第二个参数设置为一个较大的数值,例如 10000。 综上所述,将 SQL Server 函数转换为 MySQL 函数需要针对具体的函数进行分析和转换。在转换过程中,应该注意两种数据库之间的语法和功能的差异。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值