MYSQL函数 Cast和convert的用法详解

wxb-km 2021-08-31 原文


MYSQL函数 Cast和convert的用法详解

MYSQL Cast函数是非常重要的MYSQL函数,下面就将为您详细介绍MYSQL Cast函数的语法及其使用,希望能让您对MYSQL Cast函数有更多的认识。

BINARY     
BINARY操作符将后面的字符串抛给一个二进制字符串。这是一种简单的方式来促使逐字节而不是逐字符的进行列比较。这使得比较区分大小写,即使该列不被定义为BINARY或BLOB。BINARY也会产生结尾空白,从而更加显眼。  

  1. mysql>   SELECT   \’a\’   =   \’A\’;     
  2.       
  3.                   –>   1     
  4.       
  5. mysql>   SELECT   BINARY   \’a\’   =   \’A\’;     
  6.                    –>   0     
  7. mysql>   SELECT   \’a\’   =   \’a   \’;     
  8.                    –>   1     
  9. mysql>   SELECT   BINARY   \’a\’   =   \’a   \’;     
  10.                    –>   0    

BINARY影响整个比较;它可以在任何操作数前被给定,而产生相同的结果。     
    
BINARY   str是CAST(str   AS   BINARY)的缩略形式。   
    
注意,在一些语境中,假如你将一个编入索引的列派给BINARY,   MySQL将不能有效使用这个索引。     
假如你想要将一个BLOB值或其它二进制字符串进行区分大小写的比较,你可利用二进制字符串没有字符集这一事实实现这个目的,这样就不会有文书夹的概念。为执行一个区分大小写的比较,可使用CONVERT()函数将一个字符串值转化为一个不区分大小写的字符集。其结果为一个非二进制字符串,因此LIKE操作也不会区分大小写:   

  1. 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   产生一个二进制字符串。
    
假如给定了随意长度N,则 BINARY[N] 使cast使用该参数的不多于   N   个字节。同样的,CHAR[N]会使cast使用该参数的不多于N   个字符。    

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

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

  1. SELECT   CONVERT(\’abc\’   USING   utf8);    

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

  1. CREATE   TABLE   new_table   SELECT   CAST(\’2000-01-01\’   AS   DATE);    

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

  1. 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() 的字符串函数来代替。   

若要在数值语境中将一个字符串派给一个数值,   通常情况下,除了将字符串值作为数字使用外,你不需要做任何事:   

  1. mysql>   SELECT   1+\’1\’;     
  2.                 –>   2    

若要在一个字符串语境中使用一个数字,该数字会被自动转化为一个BINARY   字符串。   

  1. mysql>   SELECT   CONCAT(\’hello   you   \’,2);     
  2.                   –>   \’hello   you   2\’    

MySQL支持带符号和无符号的64比特值的运算。若你正在使用数字操作符(如   +)  而其中一个操作数为无符号整数,则结果为无符号。可使用SIGNED   和UNSIGNED   cast   操作符来覆盖它。将运算分别派给带符号或无符号64比特整数。 

  1. mysql>   SELECT   CAST(1-2   AS   UNSIGNED)     
  2.                   –>   18446744073709551615     
  3. mysql>   SELECT   CAST(CAST(1-2   AS   UNSIGNED)   AS   SIGNED);     
  4.                   –>   -1    

注意,假如任意一个操作数为一个浮点值,则结果为一个浮点值,且不会受到上述规则影响   (关于这一点, DECIMAL 列值被视为浮点值)。     

  1. mysql>   SELECT   CAST(1   AS   UNSIGNED)   –   2.0;     
  2.                   –>   -1.0     
  3.      
发表于
2015-11-19 13:06 
Greyed Wolf 
阅读(51487
评论(0
编辑 
收藏 
举报

 

版权声明:本文为wxb-km原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/wxb-km/p/4977287.html

MYSQL函数 Cast和convert的用法详解的更多相关文章

  1. Gmail,QMail,163邮箱的 IMAP/SMTP/POP3 地址 – Greyed Wolf

    Gmail,QMail,163邮箱的 IMAP/SMTP/POP3 地址 Gmail,QMail,163邮箱的 […]...

随机推荐

  1. Spring Boot2 系列教程(二十一)整合 MyBatis

    前面两篇文章和读者聊了 Spring Boot 中最简单的数据持久化方案 JdbcTemplate,JdbcT […]...

  2. Gradle使用及配置

    构建工具:Gradle(6.8)   下载地址:https://gradle.org/releases/    […]...

  3. 微信事件推送接口【转】

    微信中所有的推送事件都会发送到开发者填写的URL,MP中的,左侧最下面的开发-》基本配置-》服务器配置-》第一 […]...

  4. Python3.7 + jupyter安装(CentOS6.5)

    Python3.7 + jupyter安装(CentOS6.5) Python3.7 + jupyter安装( […]...

  5. Mybatis的缓存——一级缓存和源码分析

    目录 什么是缓存? 一级缓存 测试一、 测试二、 总结: 一级缓存源码分析: 1. 一级缓存到底是什么? 得出 […]...

  6. docker安装php扩展gd库

    Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。 Docker […]...

  7. 前端开发框架对比

    近几年随着 jQuery、Ext 以及 CSS3 的发展,以 Bootstrap 为代表的前端开发框架如雨后春 […]...

  8. NGINX的启停命令、以及动态加载配置文件的命令

      — 启动(不推荐):在nginx目录下有一个sbin目录,sbin目录下有一个nginx可执行 […]...

展开目录

目录导航