mysql 类型转换函数

来源:互联网 发布:ubuntu安装deepin商店 编辑:程序博客网 时间:2024/04/30 11:30

12.8.   Cast函数和操作符  
BINARY    
BINARY操作符将后面的字符串抛给一个二进制字符串。这是一种简单的方式来促使逐字节而不是逐字符的进行列比较。这使得比较区分大小写,即使该列不被定义为   BINARY或   BLOB。BINARY也会产生结尾空白,从而更加显眼。    
   
mysql>   SELECT   'a'   =   'A';  
   
                  ->   1  
   
mysql>   SELECT   BINARY   'a'   =   'A';  
   
                  ->   0  
   
mysql>   SELECT   'a'   =   'a   ';  
   
                  ->   1  
   
mysql>   SELECT   BINARY   'a'   =   'a   ';  
   
                  ->   0  
   
BINARY影响整个比较;它可以在任何操作数前被给定,而产生相同的结果。    
   
BINARY   str   是CAST(str   AS   BINARY)的缩略形式。  
   
注意,在一些语境中,假如你将一个编入索引的列派给BINARY,   MySQL   将不能有效使用这个索引。    
   
假如你想要将一个   BLOB值或其它二进制字符串进行区分大小写的比较,你可利用二进制字符串没有字符集这一事实实现这个目的,这样就不会有文书夹的概念。为执行一个区分大小写的比较,可使用     CONVERT()函数将一个字符串值转化为一个不区分大小写的字符集。其结果为一个非二进制字符串,因此   LIKE   操作也不会区分大小写:    
   
SELECT   'A'   LIKE   CONVERT(blob_col   USING   latin1)   FROM   tbl_name;  
   
若要使用一个不同的字符集,   替换其在上述语句中的latin1名。  
   
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]    
BINARY   产生一个二进制字符串。关于它怎样影响比较结果的说明见本章中   BINARY操作符项。  
   
假如给定了随意长度N,则   BINARY[N]   使   cast使用该参数的不多于   N   个字节。同样的,   CHAR[N]会使   cast   使用该参数的不多于N   个字符。    
   
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(str   AS   BINARY)和BINARY   str相同。   CAST(expr   AS   CHAR)   将表达式视为一个带有默认字符集的字符串。    
   
若用于一个诸如   CONCAT('Date:   ',CAST(NOW()   AS   DATE))这样的比较复杂的表达式的一部分,CAST()也会改变结果。  
   
你不应在不同的格式中使用   CAST()   来析取数据,但可以使用诸如LEFT()   或   EXTRACT()   的样的字符串函数来代替。请参见12.5节,“日期和时间函数”。    
   
若要在数值语境中将一个字符串派给一个数值,   通常情况下,除了将字符串值作为数字使用外,你不需要做任何事:  
   
mysql>   SELECT   1+'1';  
   
                ->   2  
   
若要在一个字符串语境中使用一个数字,该数字会被自动转化为一个BINARY   字符串。  
   
mysql>   SELECT   CONCAT('hello   you   ',2);  
   
                  ->   'hello   you   2'  
   
MySQL   支持带符号和无符号的64比特值的运算。若你正在使用数字操作符     (如   +)   而其中一个操作数为无符号整数,则结果为无符号。可使用SIGNED   和UNSIGNED   cast   操作符来覆盖它。将运算分别派给带符号或无符号64比特整数。  
   
mysql>   SELECT   CAST(1-2   AS   UNSIGNED)  
   
                  ->   18446744073709551615  
   
mysql>   SELECT   CAST(CAST(1-2   AS   UNSIGNED)   AS   SIGNED);  
   
                  ->   -1  
   
注意,假如任意一个操作数为一个浮点值,则结果为一个浮点值,   且不会受到上述规则影响   (关于这一点,   DECIMAL   列值被视为浮点值)。    
   
mysql>   SELECT   CAST(1   AS   UNSIGNED)   -   2.0;  
   
                  ->   -1.0  
   
若你在一个算术运算中使用了一个字符串,它会被转化为一个浮点数。

原创粉丝点击