Mysql:如何获取每一行小数点后超过一定数量的数据

lx0bsm1f  于 2023-02-03  发布在  Mysql
关注(0)|答案(7)|浏览(158)

我有一个包含浮点值的表。

+   id   |  value  |
+--------|---------|
+   1    | 19.22   |
+   2    | 32.333  |
+   3    | 1.2332  |
+   4    | 0.22334 |
+   5    | 4.55    |

我想提取点后包含3个以上小数的每一行。

我期待的结果是:

+   id   |  value  |
+--------|---------|
+   2    | 32.333  |
+   3    | 1.2332  |
+   4    | 0.22334 |
62o28rlo

62o28rlo1#

value列转换为varchar并使用字符串比较。

vohkndzv

vohkndzv2#

这对我很有效:

SELECT  *
FROM table
WHERE column <> ROUND (column,2)

或:

SELECT  *
FROM table
WHERE column <> CAST (column AS DECIMAL(36,2))
jslywgbw

jslywgbw3#

根据您提供的数据,regex (MySQL 5.0+)对我很有效:

SELECT t.* 
  FROM YOUR_TABLE t 
 WHERE t.`value` REGEXP '[0-9]+.[0-9][0-9][0-9]+'

参考:

bxfogqkk

bxfogqkk4#

这对我很有效

SELECT * 
FROM `table` 
WHERE LENGTH(SUBSTR(`value`,INSTR(`value`,"."))) >3

计算小数.01是3,.011是4

atmip9wb

atmip9wb5#

试试这个:

select value, LEN(value) - CHARINDEX('.', value) as DecimalCount from Table
where LEN(value) - CHARINDEX('.', value) > 2

注意:我没有使用mySQL,我有MSSQL。让我知道如果这对你有效-刚刚注意到你要求一个mySQL解决方案。

    • 更新:**为回答错误的平台感到很糟糕。一点研究让我得到了mySQL:
select * from Table
where LENGTH(SUBSTRING_INDEX(value, '.', -1)) > 2
q1qsirdb

q1qsirdb6#

SELECT * FROM表格t WHERE楼层(t.列名)!=t.列名

5gfr0r5j

5gfr0r5j7#

**SQL Server:**要从SQL表的“quantity”列中提取小数位数超过3位的值,该表的“quantity”列使用浮点数据类型,您可以使用以下查询:

SELECT *
FROM `table`
WHERE ROUND(quantity, 3) <> quantity;

相关问题