在操作mysql时,经常需要将字符转换成数字,这一步虽然简单,但不常用的话也很容易忘记,现将在网上找到的方法记录如下:
1、将字符的数字转成数字,比如'0'转成0可以直接用加法来实现 例如:将pony表中的d 进行排序,可d的定义为varchar,可以这样解决
select * from pony order by (d+0); select '123'+0; 会把字符串‘123’转换为数字123。 SELECT 1+'1'; 会自动转换成数字类型 mysql> SELECT CAST(1 AS UNSIGNED) - 2.0;
-> -1.0
若你在一个算术运算中使用了一个字符串,它会被转化为一个浮点数。
2、在进行ifnull处理时,比如 ifnull(a/b,'0') 这样就会导致 a/b成了字符串,因此需要把'0'改成0,即可解决此困扰.
3、比较数字和varchar时,比如a=11,b="11ddddd";
则 select 11="11ddddd"相等
若绝对比较可以这样:
select binary 11 =binary "11ddddd";
4、字符集转换函数,可以用以下函数来转换: - CAST(expr AS type), CONVERT(expr,type) , CONVERT(expr USING transcoding_name)
CAST() 和CONVERT() 函数可用来获取一个类型的值,并产生另一个类型的值。
这个类型 可以是以下值其中的 一个:
- BINARY[(N)] 二进制,同带binary前缀的效果 : BINARY
- CHAR[(N)] 字符型,可带参数 : CHAR()
- DATE
- DATETIME
- DECIMAL
- SIGNED [INTEGER]
- TIME 整数
- UNSIGNED [INTEGER] 无符号整数
如:
SELECT CONVERT('abc' USING utf8);
SELECT CAST('2000-01-01' AS DATE);
|