`
istone
  • 浏览: 63208 次
  • 性别: 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中类型转换

    在MySQL中,类型转换是一项非常实用的功能,它可以帮助我们处理不同数据类型之间的转换,尤其是在处理如日期、数字与字符串等类型的相互转换时尤其有用。本文将详细介绍MySQL中常用的类型转换函数及其具体用法,帮助...

    Java数据类型和MySql数据类型对应一览

    Java 数据类型和 MySql 数据类型对应一览 在 Java 编程语言中,数据类型是指变量或函数可以持有的值的类型。 MySql 数据库也具有其自己的数据类型,用于存储和管理数据。在本文中,我们将对 Java 数据类型和 MySql ...

    从数据类型 nvarchar 转换为 numeric 时出错.pdf

    知识点一:数据类型转换问题 在数据库操作中,数据类型转换是一个常见的问题。在本案例中,从数据类型nvarchar转换为numeric时出现错误。这是因为在进行数据类型转换时,数据的内容需要符合目标数据类型的要求。例如...

    Mysql CONVERT类型转换功能

    MySQL 中的 `CONVERT` 函数主要用于进行数据类型的转换,可以将一个表达式从一种数据类型转换为另一种数据类型。这对于处理不同数据类型的数据非常有用,尤其是在需要统一数据格式或者进行特定计算时。 #### 二、...

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

    1. **数据类型转换**:MySQL和Oracle的数据类型有所不同,如MySQL的VARCHAR2在Oracle中是VARCHAR,日期类型在两者的表示方式也不同。转换工具会自动处理这些差异,确保数据的完整性。 2. **表结构迁移**:包括字段...

    mysql数据库转换成oracle

    但要注意,Oracle可能需要不同的数据类型映射,例如,MySQL的VARCHAR2可能需要转换为Oracle的VARCHAR2。 5. **使用转换工具**:为了简化上述过程,存在专门的工具,如压缩包中的`mysq2oracn.exe`。这种工具可以自动...

    MySQL数据类型详解

    MySQL数据类型详解 在数据库管理系统中,数据类型是用来定义列中数据可以取值的类型和范围。在MySQL中定义数据类型具有重要的作用: 1. 对数据进行分类:数据类型有助于对数据进行归类处理,例如整数、字符串、...

    MySQL Migration Toolkit 数据库转换工具

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

    MySQL_C_API.rar_API_mysql_doc_mysql api_mysql c语言

    9. **类型转换**:在处理查询结果时,可能需要将MySQL数据类型转换为C语言的数据类型,如`mysql_fetch_lengths()`获取每列的长度,有助于正确地处理BLOB和VARBINARY等变长类型。 10. **性能优化**:使用`mysql_...

    Java中数据类型和MYSQL中数据类型的对比

    在 Java 应用程序中,通常需要将 Java 数据类型转换为 MySQL 数据类型进行数据库交互。例如,使用 Java 的 `PreparedStatement` 设置参数时,可能需要将 `java.sql.Date` 转换为 `DATE` 类型,或者将 `String` 转换...

    mysql数据类型详解.pdf

    总之,MySQL数据类型的灵活使用对于数据库性能优化至关重要,同时也关系到数据完整性和安全性。在实际应用中,数据库管理员和开发者应当根据实际需求和数据特性,选择最合适的数据类型,以达到存储高效和查询快速的...

    java的Date类型转换成MySQL的DateTime类型.doc

    Java 中 Date 类型转换为 MySQL 的 DateTime 类型 Java 中的 Date 类型和 MySQL 的 DateTime 类型是两个不同的日期时间类型,都是用于表示日期和时间的信息,但它们之间存在一定的区别。Java 中的 Date 类型是使用...

    java、mysql以及oracle数据类型对照表

    比如,从MySQL迁移到Oracle时,需要了解哪些数据类型可以直接映射,哪些可能需要转换或调整。文件名"mysql,oracle以及java数据类型对照.doc"正是提供这种信息的关键资源,它详尽列出了这些对应关系,便于开发人员...

    MySql于Java数据类型对应列表

    ### MySQL与Java数据类型对应详解 #### 概述 在进行数据库操作时,尤其是在使用Java进行MySQL数据库开发的过程中,正确地映射数据类型是至关重要的一步。本文将详细介绍MySQL中的各种数据类型及其在Java中的对应...

    KETTLE数据库转换类型例子

    同时,Kettle支持自定义转换逻辑,可以应对各种复杂的数据清洗和转换需求,比如数据类型转换、缺失值处理、数据验证等。这种灵活性和强大的功能使得Kettle成为数据工程师在数据集成项目中的首选工具之一。

    mysql数据库互相转换及同步工具-MySQL_MySQL字符集互转

    6. **注意事项**:在进行字符集转换和同步时,必须考虑数据类型、索引、触发器、存储过程等可能影响转换效果的因素。此外,测试环境的预演是必不可少的,以确保生产环境的顺利切换。 7. **最佳实践**:在进行大规模...

    mysql sql数据转换dbconvert_mssql_mysql

    两者在语法、数据类型、管理方式等方面存在差异,因此数据转换工具的作用就是解决这些差异,确保数据在迁移过程中能准确无误地保留下来。 在压缩包的文件名称列表中,我们可以看到以下文件: 1. InstMsiW.Exe 和 ...

    SQL Server转换为MySQL工具

    2. 数据迁移:工具会逐条读取SQL Server中的记录,根据字段映射规则将其转换为符合MySQL数据类型的格式,然后插入到对应的MySQL表中。这一步骤需要注意数据类型不兼容的问题,例如,SQL Server的datetime与MySQL的...

    OracleTOMysql 转换工具

    5. **数据类型转换**:由于Oracle和MySQL支持的数据类型有所不同,转换工具需要能够识别并自动转换这些类型,如NUMBER在Oracle中对应MySQL的DECIMAL或FLOAT。 6. **表结构转换**:转换工具应能识别Oracle的表结构,...

Global site tag (gtag.js) - Google Analytics