MySQL中CAST和CONVERT的区别(转)

PHPABC Mysql 1,986 次浏览 , , 没有评论

语法:

CAST(expr AS type), CONVERT(expr,type) , CONVERT(expr USING transcoding_name) 。

CAST() 和CONVERT() 函数可用来获取一个类型的值,并产生另一个类型的值。

这个类型 可以是以下值其中的 一个:

BINARY[(N)]     
CHAR[(N)]     
DATE     
DATETIME     
DECIMAL     
SIGNED   [INTEGER]     
TIME     
UNSIGNED   [INTEGER]

CAST() and CONVERT(… USING …) 是标准 SQL语法。CONVERT()的非USING 格式是ofis ODBC语法。

带有USING的CONVERT() 被用来在不同的字符集之间转化数据。在 MySQL中, 自动译码名和相应的字符集名称相同。例如。 这个语句将服务器的默认字符集中的字符串 ‘abc’转化为utf8字符集中相应的字符串:

SELECT   CONVERT('abc'   USING   utf8);

当你想要在一个CREATE … SELECT 语句中创建一个特殊类型的列,则cast函数会很有用:

CREATE   TABLE   new_table   SELECT   CAST('2000-01-01'   AS   DATE);

该函数也用于ENUM 列按词法顺序的排序。通常ENUM列的排序在使用内部数值时发生。将这些值按照词法顺序派给 CHAR 结果:

SELECT   enum_col   FROM   tbl_name   ORDER   BY   CAST(enum_col   AS   CHAR);

CAST(expr AS CHAR) 将表达式视为一个带有默认字符集的字符串。

若用于一个诸如 CONCAT(‘Date: ‘,CAST(NOW() AS DATE))这样的比较复杂的表达式的一部分,CAST()也会改变结果。

你不应在不同的格式中使用 CAST() 来析取数据,但可以使用诸如LEFT() 或 EXTRACT() 的样的字符串函数来代替。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

Go