我有一个包含浮点值的表。
+ 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 |
答案 0 :(得分:5)
将value
列投射为varchar
并使用字符串比较。
答案 1 :(得分:4)
根据您提供的数据,此regex (MySQL 5.0+)对我有用:
SELECT t.*
FROM YOUR_TABLE t
WHERE t.`value` REGEXP '[0-9]+.[0-9][0-9][0-9]+'
参考:
答案 2 :(得分:4)
这对我有用:
SELECT *
FROM table
WHERE column <> ROUND (column,2)
或:
SELECT *
FROM table
WHERE column <> CAST (column AS DECIMAL(36,2))
答案 3 :(得分:3)
这对我有用
SELECT *
FROM `table`
WHERE LENGTH(SUBSTR(`value`,INSTR(`value`,"."))) >3
计算小数.01是3,.011是4
答案 4 :(得分:1)
试试这个:
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
答案 5 :(得分:0)
SELECT * 从表t 楼层(t.columnname)!= t.columnname