`
istone
  • 浏览: 62206 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

MySQL 数据类型转换

阅读更多

今天遇到了怪事:从MySQL里查的数据显示到页面居然只有一个字,拿Hibernate打印的SQL语句在MySQL里执行,查询正常。刚开始以为是css之类的作怪,逐在控制台打印了一下输出结果,仍然只有一个字,奇了怪了。desc了一下表结构,发现该字段是char(50),查了一些资料,需要类型转换,CAST(expr AS type),查询语句改成select (name as char(50)) from table;页面显示正常,晕死

MYSQL 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

原文地址:http://www.cnblogs.com/pony/archive/2009/02/18/1393329.html

 

分享到:
评论

相关推荐

    mysql数据类型转换

    mysql数据类型转换

    MySQL Migration Toolkit 数据库转换工具

    MySQL Migration Toolkit 可以将任何数据源转换成mysql的数据,也可以将mysql的数据转换成其它类型的数据 MySQL Migration Toolkit 包括下列转换工具: Access-to-MySQL Access数据库转MySQL数据库 DBF-to-MySQL DBF...

    Mysql CONVERT类型转换功能

    Mysql CONVERT类型转换功能 1) 把数据加上一个0或0.0 能把它强制转换为数值型 2) floor函数会把浮点数强制转换为整数 3) 给一个整数加上一个0.0会强制转换为浮点数 。。。。

    KETTLE数据库转换类型例子

    此处主要以两个例子说明KETTLE可支持的数据转换操作,一个说明不同数据库表间的数据提取和加载,一个说明数据文件与数据库表间的数据提取与加载。

    ACCESS数据库转换MYSQL数据库的软件

    如果想要将SQL SERVER的数据库转换到MYSQL,也可以使用这个软件,具体操作是先使用SQL SERVER的“导入和导出数据”将SQL SERVER数据导出到ACCESS文件,然后再将ACCESS文件导出为MYSQL语句。 运行转换功能后,系统会...

    mysql和oracle数据库之间的转换工具(支持各种类型数据库)

    各种数据库之间的转换工具,亲测,好用!简洁方便。节省好多时间

    MySql转换成Oracle工具

    可以转换所有的Mysql字段类型 支持所有版本的Mysql 可以将数据合并到已经存在的ORACLE表中 非常容易使用的向导模式 支持所有版本的Mysql字符集 对超大数据表的导出进行了优化处理 Convert Mysql to Oracle...

    MySQL函数-数字转换为大写中文

    MySQL函数 数字转中文 非金额 处理数据类型 decimal(21,6)

    mysql转换postgresql工具

    数据转换:将MySQL中的数据转换为PostgreSQL中的相应数据类型,并确保数据的一致性和完整性。 查询语句转换:将MySQL中的查询语句转换为PostgreSQL中的语法和函数。 转换规则配置:允许用户自定义转换规则,以适应...

    mysql 函数,可以将数字转换为中文大写形式

    mysql 函数,可以将数字转换为中文大写形式。大写数字是中国特有的数字书写方式,利用与数字同音的汉字取代数字,以防止数目被涂改。 据考证,大写数字最早是由武则天发明,后经朱元璋改进完善。

    sql使用cast进行数据类型转换示例

    您可能感兴趣的文章:详解SQL Server中的数据类型详解MySQL数据类型int(M)中M的含义mysql存储引擎和数据类型(二)Java数据类型与MySql数据类型对照表SQL Server数据类型转换方法SQL Server比较常见数据类型详解...

    MySQL隐式类型的转换陷阱和规则

    相信大家都知道隐式类型转换有无法命中索引的风险,在高并发、大数据量的情况下,命不中索引带来的后果非常严重。将数据库拖死,继而整个系统崩溃,对于大规模系统损失惨重。所以下面通过本文来好好学习下MySQL隐式...

    MysqlToOracle数据转换工具

    MysqlToOracle数据转换工具,Mysql数据转换成Oracle数据。

    MySQL数据库中CAST与CONVERT函数实现类型转换的讲解

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

    不同类型数据库之间极速数据转换

    不同类型数据库之间极速数据转换 sql转mysql 转oracle

    mysql blob to 向 file转换

    mysql数据库 中用blob存储image及file 数据blob的写入与提取 方法概要

    任意数据库类型数据转换系统 OBDB2DB 1.75

    任意数据库类型数据转换系统 OBDB2DB 1.75 最近公司有一个项目 需要把原来的系统从 MSSQL 升迁到阿里云RDS MySQL 上面 为便于测试 所以需要把原来系统的所有数据表以及测试数据转换到 MySQL 上面 在百度上找了很多...

    MYSQL

    7.4.7 类型转换运算符 7.4.8 控制流函数 7.4.9 数学函数 7.4.10 字符串函数 7.4.11 日期和时间函数 7.4.12 其他函数 7.4.13 与GROUP BY子句一起使用的函数 7.5 CREATE DATABASE ...

    oracle中的BLOB(照片)转换到mysql中

    从oracle中的BLOB类型字段中取出照片,转存到mysql数据库中。思路是现将oracle中的照片存储在本地文件夹,在将本地图片上传到mysql中。

Global site tag (gtag.js) - Google Analytics