- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以,这是结构:
mysql> describe tier;
+---------------------+----------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------------+----------------+------+-----+---------+----------------+
| ID | int(10) | NO | PRI | NULL | auto_increment |
| UP_TO | decimal(21,10) | YES | | NULL | |
+---------------------+----------------+------+-----+---------+----------------+
2 rows in set (0.01 sec)
然后是数据:
mysql> select id, up_to from tier;
+----+-----------------+
| id | up_to |
+----+-----------------+
| 1 | 1000.0000000000 |
| 2 | 2000.0000000000 |
| 3 | 3000.0000000000 |
| 4 | 500.0000000000 |
| 5 | 1000.0000000000 |
| 6 | 1500.0000000000 |
| 7 | 100.0000000000 |
| 8 | 200.0000000000 |
| 9 | 1000.0000000000 |
| 10 | 2000.0000000000 |
| 11 | 100.0000000000 |
| 12 | 200.0000000000 |
+----+-----------------+
12 rows in set (0.00 sec)
然后有一个小转变:
mysql> SELECT id, TRIM(TRAILING '.' FROM TRIM(TRAILING '0' FROM CAST(up_to AS CH
AR) )) as converted from tier;
+----+-----------+
| id | converted |
+----+-----------+
| 1 | 1000 |
| 2 | 2000 |
| 3 | 3000 |
| 4 | 500 |
| 5 | 1000 |
| 6 | 1500 |
| 7 | 100 |
| 8 | 200 |
| 9 | 1000 |
| 10 | 2000 |
| 11 | 100 |
| 12 | 200 |
+----+-----------+
12 rows in set (0.00 sec)
很好。
让我们把它放在一个存储函数中以方便使用!
DELIMITER //
CREATE FUNCTION strip_trailing_zero(I_DEC DECIMAL(10,7)) RETURNS VARCHAR(20) DETERMINISTIC
BEGIN
DECLARE strBuff VARCHAR(20);
DECLARE cnt NUMERIC(2);
DECLARE tString VARCHAR(20);
SELECT CAST(I_DEC AS CHAR) INTO tString;
SELECT LOCATE('.',tString) INTO cnt;
IF cnt > 0 THEN
SELECT TRIM(TRAILING '.' FROM TRIM(TRAILING '0' FROM tString)) INTO strBuff;
ELSE
SET strBuff = tString;
END IF;
RETURN strBuff;
END//
DELIMITER ;
很酷。
GRANT EXECUTE ON FUNCTION mysql.strip_trailing_zero TO 'whatever'@'localhost';
终于,现在可以试试我的新玩具了……:
mysql> select id, mysql.strip_trailing_zero(`up_to`) as converted_2 from tier;
+----+-------------+
| id | converted_2 |
+----+-------------+
| 1 | 999.9999999 |
| 2 | 999.9999999 |
| 3 | 999.9999999 |
| 4 | 500 |
| 5 | 999.9999999 |
| 6 | 999.9999999 |
| 7 | 100 |
| 8 | 200 |
| 9 | 999.9999999 |
| 10 | 999.9999999 |
| 11 | 100 |
| 12 | 200 |
+----+-------------+
12 rows in set, 7 warnings (0.02 sec)
好吧,那么,去你妈的也是 mysql!
不认真,这是一个愚蠢的笑话。我确信我做错了什么,中间有一个浮点转换,但我就是想不通!
欢迎帮助!谢谢。S.
编辑:将输入参数类型更改为DECIMAL(21,10)
后的结果:
mysql> select id, mysql.strip_trailing_zero(`up_to`) as converted_2 from tier;
+----+-------------+
| id | converted_2 |
+----+-------------+
| 1 | 1000 |
| 2 | 2000 |
| 3 | 3000 |
| 4 | 500 |
| 5 | 1000 |
| 6 | 1500 |
| 7 | 100 |
| 8 | 200 |
| 9 | 1000 |
| 10 | 2000 |
| 11 | 100 |
| 12 | 200 |
+----+-------------+
12 rows in set (0.02 sec)
问题解决了...太棒了!谢谢!
最佳答案
您表中的 UP_TO
字段定义为 decimal(21,10)
,但您的函数采用 decimal(10,7)
。我想那会剥夺你的值(value)。
尝试更改您的函数以接受 decimal(21,10)
。
关于mysql - 围绕 DECIMAL 数据类型转换的令人不安的 mysql 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17076775/
我是 Python 编程的新手,最近我一直在学习数据类型的某些方面。正如我所读,decimal.Decimal() 方法创建了一个小数对象; decimal.Decimal.from_float()
这是我今天在 filmmaster.com: 遇到的错误 PicklingError: Can't pickle : it's not the same object as decimal.Decim
简单的问题 - 为什么 Decimal 类型定义这些常量?何必呢? 我正在寻找一个原因,为什么这是由语言定义的,而不是可能的用途或对编译器的影响。为什么首先把它放在那里?编译器可以像 Decimal.
我在用 Python 编码为 JSON 时遇到问题,特别是 decimal.Decimal 值。我正在使用它为 Google App Engine 应用程序输出 JSON。 为了避免 Python 中
我在 Django 项目中有一些 python 代码曾经可以正常工作。托管该项目的服务器丢失了,我不得不将代码复制到新服务器上。现在,我收到一个似乎毫无意义的错误。 我的一个 python 文件中包含
我发现生成具有特定数量 的 decimal.Decimal 数字的最佳方法 significant figures 是用来初始化下面的变量 kluge 的: import decimal THIS_I
我在应用空合并运算符时遇到以下错误。 private decimal _currentImpulseId; // ... later on used in public property getter
我想使用 decimal.Decimal 对转换后的数字字符串进行算术运算。无论转换后的数字字符串有多少小数,我都希望返回有两位小数。 在这种特殊情况下,为什么两位小数精度返回一位小数,为什么三位小数
我想使用 decimal.Decimal 对转换后的数字字符串进行算术运算。无论转换后的数字字符串有多少小数,我都希望返回有两位小数。 在这种特殊情况下,为什么两位小数精度返回一位小数,为什么三位小数
是什么导致 sum 始终为 null? object[] data = new object[] { 2.2M, 3m, 1, "string", true,
我似乎失去了很多 float 的精度。 例如我需要求解一个矩阵: 4.0x -2.0y 1.0z =11.0 1.0x +5.0y -3.0z =-6.0 2.0x +2.0y +5.0z =7.0
这个问题在这里已经有了答案: Why python decimal.Decimal precision differs with equable args? (2 个答案) 关闭 5 年前。 我知道
当我尝试转换 Task 时出现此错误至 decimal : Could not load file or assembly 'EntityFramework, Version=5.0.0.0, Cul
我听到有人说在 C# 中,大写十进制比小写十进制使用更多的内存,因为小写十进制被解析为小写十进制并且需要内存。 这是真的吗? 最佳答案 没有。 decimal 只是 System.Decimal 的别
我有一个对象,它是 dict、list、常规数据类型和 decimal.Decimal 的嵌套组合。我想用 PyMongo 将这个对象插入到 MongoDB 中。 PyMongo 拒绝插入 Decim
sdr 是我的 sqldatareader,我想检查小数类型的 curPrice 值是否为空。 inrec.curPrice = sdr.IsDBNull(7) ? (十进制?)空:sdr.GetDe
变量 'a' 的类型可以是 - int/float/decimal.Decimal(但不是字符串) 我想检查它是否是 decimal.Decimal 类型。 以下作品: import decimal
我正在使用一个在函数调用中使用一些十进制类型参数的库。但是我有 numpy.int32 类型变量。当我将它传递给函数调用时,出现以下错误: TypeError: conversion from num
考虑以下代码: public class DecimalWrapper { public static implicit operator DecimalWrapper
考虑以下代码: public class DecimalWrapper { public static implicit operator DecimalWrapper
我是一名优秀的程序员,十分优秀!