首页 > MySQL > MySql 那些你不知道的 类型转化函数
2009五月29

MySql 那些你不知道的 类型转化函数

呵,刚才想了一下这一系列MySql的教程,为什么叫“那些你不知道的”呢?

其实,原因很简单,因为在系统的看这些东西之前,这些都是我不知道的。或者是知道也想不起来的那些知识点。

所以,取这个题目,只是为了提醒自己,这些东西自己曾经不知道,虽然现在有时候也爱忘。

不过回头翻一下,总是能很容易的想起来。毕竟,这里面的代码都是我一行一行敲出来的,而且不仅仅是复制粘贴那么简单的。

好了, 闲话不说,来继续看一下MySql 那些类型转化函数吧——其实就一个,呵呵,那就是CAST()

虽然只有一个函数,不过我还是认为我们有必要来学习一下。或者,是我自己有必要知道有这么个东西。 :arrow:

其实学习CAST()这么一个函数的真正意义在于,你要知道都可以转换成哪些指定的数据类型

这才是重要的。

还记得我们之前说过的BINARY()这个函数了吗?没错,就是它,区分大小写时我们经常使用的这个函数。

其实BINARY str 是CAST(str AS BINARY)的缩略形式。 :roll:

那么好吧,让我们来看一下CAST()函数都支持哪几种类型的转换:

BINARY, CHAR, DATE, TIME, DATETIME, SIGNED, UNSIGNED

先来看看用CAST()怎么实现BINARY的功能:

SELECT  'xiaoxiaozi' = BINARY 'Xiaoxiaozi' AS binary_str,  'xiaoxiaozi' = CAST(  'Xiaoxiaozi' AS BINARY ) AS cast_binary_str;
/*
binary_str  cast_binary_str
0           0
*/

CAST()将日期和时间函数转为数值型而不是字符串型输出:

呵,先来说一下为何要有这种要求。那是因为我们经常要进行日期,时间的加减运算。嗯。

SELECT CAST( NOW( ) AS signed INTEGER ) , CURDATE( ) +0;
/*
cast(now() as signed integer)   curdate()+0
20090529154018                  20090529
*/

当我们要把数据转移到一个新的RDBMS(关系型数据库)时,CAST()函数就显得尤其有用,

因为它允许我们把值从旧数据类型转变为新的数据类型,以使它们更适合新的系统。

这个也把书中的例子抄过来吧。如果没有例子还真不容易让人信服。呵呵。

假设下面的表不是MySql的,它以字符串形式存储日期值:

select * from old;
/*
email                   day     month   year    hour    min
xiaoxiaozi@gmail.com    15      03      1999    13      42
xiaoxiaozi@qq.com       31      12      2001    19      59
xiaoxiaozi@tom.com      08      11      1996    03      37
*/

我们要把其移动至MySql中,第一步先创建表来在座这些数据,:

create table new(
email varchar(255) not null default '',
time datetime not null default '0000-00-00 00:00:00',
primary key (email)
)
type = myisam;

然后从旧的表中把数据导入新表,并把值转为定义中的类型:

insert into new(email,time) select email,cast(concat(year,month,day,hour,min,'00') as datetime) from old;

就这么一句,帅不?嘿嘿,一切问题搞定。嗯。。

文章作者:simaopig
本文地址:http://www.xiaoxiaozi.com/2009/05/29/681/
版权所有 © 转载时必须以链接形式注明作者和原始出处!

本文目前尚无任何评论.

发表评论

:wink: :twisted: :roll: :oops: :mrgreen: :lol: :idea: :evil: :cry: :arrow: :?: :-| :-x :-o :-P :-D :-? :) :( :!: 8-O 8)