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

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

  1. mysql>   SELECT   'a'   =   'A';
  2. ->   1
  3. mysql>   SELECT   BINARY   'a'   =   'A';
  4. ->   0
  5. mysql>   SELECT   'a'   =   'a   ';
  6. ->   1
  7. mysql>   SELECT   BINARY   'a'   =   'a   ';
  8. ->   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

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

  1. MySQL数据类型转换函数CAST与CONVERT的用法

    MySQL 的CAST()和CONVERT()函数可用来获取一个类型的值,并产生另一个类型的值.两者具体的语法如下: 1.CAST(value as type) 就是CAST(xxx AS 类型) 2 ...

  2. mysql中cast() 和convert()的用法讲解

    一.在mysql操作中我们经常需要对数据进行类型转换.此时我们应该使用的是cast()或convert(). 二.两者的对比 相同点:都是进行数据类型转换,实现的功能基本等同 不同点:两者的语法不同, ...

  3. MySQL常用存储引擎功能与用法详解

    本文实例讲述了MySQL常用存储引擎功能与用法. MySQL存储引擎主要有两大类: 1. 事务安全表:InnoDB.BDB. 2. 非事务安全表:MyISAM.MEMORY.MERGE.EXAMPLE ...

  4. Python函数装饰器原理与用法详解《摘》

    本文实例讲述了Python函数装饰器原理与用法.分享给大家供大家参考,具体如下: 装饰器本质上是一个函数,该函数用来处理其他函数,它可以让其他函数在不需要修改代码的前提下增加额外的功能,装饰器的返回值 ...

  5. mysql之TIMESTAMP(时间戳)用法详解

    一.TIMESTAMP的变体 TIMESTAMP时间戳在创建的时候可以有多重不同的特性,如: 1.在创建新记录和修改现有记录的时候都对这个数据列刷新: ? 1 TIMESTAMP DEFAULT CU ...

  6. mysql之TIMESTAMP(时间戳)用法详解 [http://www.jb51.net/article/51794.htm]

    一.TIMESTAMP的变体 TIMESTAMP时间戳在创建的时候可以有多重不同的特性,如: 1.在创建新记录和修改现有记录的时候都对这个数据列刷新: TIMESTAMP DEFAULT CURREN ...

  7. Mysql中WHERE IN,UNION 用法详解

    WHERE IN 用法 这里分两种情况来介绍 1.in 后面是记录集,如: select  *  from  table  where   uname  in(select  uname  from  ...

  8. Python函数(函数定义、函数调用)用法详解

    Python 中,函数的应用非常广泛,前面章节中我们已经接触过多个函数,比如 input() .print().range().len() 函数等等,这些都是 Python 的内置函数,可以直接使用. ...

  9. mysql decimal类型与decimal长度用法详解

    三者的区别介绍 float:浮点型,含字节数为4,32bit,数值范围为-3.4E38~3.4E38(7个有效位) double:双精度实型,含字节数为8,64bit数值范围-1.7E308~1.7E ...

随机推荐

  1. EF、Dapper、NHibernate等ORM框架的比较及优缺点

    什么是ORM? ORM的全称是Object Relational Mapping,即对象关系映射.它的实现思想就是将关系数据库中表的数据映射成为对象,以对象的形式展现,这样开发人员就可以把对数据库的操 ...

  2. 初识C++之虚函数

    1.什么是虚函数 在基类中用virtual关键字修饰.并在一个或多个派生类中被又一次定义的成员函数.使用方法格式为: virtual 函数返回类型 函数名(參数表) { 函数体 } 虚函数是实现多态性 ...

  3. Debug与Trace工具类的应用

    在写Console程序的时候,能够使用Console.WriteLine()来时时的输出程序的执行状态和各种參数此刻的信息.可是假设是Windows Form程序,我们要怎样实时的观測程序的执行状况呢 ...

  4. Java并发编程(一)学习大纲

    (一)学习大纲 (二)线程与并发编程的概念 (三)线程安全.原子操作.复合操作.竞态条件.加锁机制(内置锁.重入) (四)对象的共享:可见性.失效数据.非原子的64位操作,加锁与可见性,volatil ...

  5. Android使用SQLite数据库

    Android中得数据库 加载驱动 连接数据库 操作数据库 使用API方式进行查询 事物操作 SQLite中的批处理,加快事物执行速度的.

  6. LVS+Keepalived(DR模式)学习笔记

    1.简述 在互联网的中型项目中,单服务器往往已经无法满足业务本身的性能要求,这时候就会平行扩展,把负载分摊到数台服务器上(集群).一般实现集群有DNS轮询,LVS,nginx负载均衡. 集群主要目的包 ...

  7. 【Mac系统】之Mysql数据库遇到修改数字密码的问题(SQL语法错误:ERROR 1064 (42000),密码策略等问题:ERROR 1819 (HY000))

    安装完Mysql也进行了第一次初始化密码以及修改密码规则(请参考文章),但是我想后续再改密码,出现了下面几个问题: #SQL语句错误问题 ERROR 1064 (42000): You have an ...

  8. 【puppeteer+Node.js安装环境】之步骤

    步骤一:首先,安装node.js环境,从官网下载最新的安装包. 步骤二:安装完成之后,再安装npm,通过命令行输入:npm install -g cnpm --registry=https://reg ...

  9. 05 linux下编译Memcached

    一: linux下编译Memcached(1)先在linux上安装gcc,cmake,autoconf,libtool工具,以后会使用到. 安装命令为:yum install gcc make aut ...

  10. 浏览器登录cookie

     <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.o ...