MySQL类型转换之CAST CONVERT
时间:2010-05-07 来源:ubuntuer
MYSQL Cast与 CONVERT函数语法:
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('2010-05-07' AS DATE);
mysql> desc new_table;
+----------------------------+------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------------------+------+------+-----+---------+-------+
| cast('2010-05-07' as DATE) | date | YES | | NULL | |
+----------------------------+------+------+-----+---------+-------+
1 row in set (0.00 sec) 神奇把 你再
CREATE TABLE new_table1 SELECT ('2010-05-07');
desc new_table1;
看看 该函数也用于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() 的样的字符串函数来代替。
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('2010-05-07' AS DATE);
mysql> desc new_table;
+----------------------------+------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------------------+------+------+-----+---------+-------+
| cast('2010-05-07' as DATE) | date | YES | | NULL | |
+----------------------------+------+------+-----+---------+-------+
1 row in set (0.00 sec) 神奇把 你再
CREATE TABLE new_table1 SELECT ('2010-05-07');
desc new_table1;
看看 该函数也用于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() 的样的字符串函数来代替。
相关阅读 更多 +