我有一个SQL表,其中一个浮点列填充了以下值:
1.4313
3.35
2.55467
6.22456
3.325
我需要选择仅包含超过4位小数的值的行。在这种情况下,select必须返回:
2.55467
6.22456
想法?谢谢!
这是我到目前为止所尝试的
select *
from table
where CAST(LATITUDE AS DECIMAL(10,5)) - LATITUDE = 0
答案 0 :(得分:16)
$/myProject/myFolder
答案 1 :(得分:7)
为什么我们不能通过这个查询简化: -
SELECT * FROM table WHERE val LIKE '%.____%'
这会选择我们想要的内容
答案 2 :(得分:3)
http://sqlfiddle.com/#!3/abadc/3/0
似乎这样的事情应该有用......
所有这一切都是将数字转换为一个整数,以便在将* 10乘以你需要的十进制数之后将小数字丢弃,然后将数字的int版本与基数相比较,之后它也乘以10到小数的力量。
如果数字不匹配,则您的小数位数超过4.如果匹配,则为4或更少。
Select *
from foo
where cast(myNum*power(10,4) as int) <> myNum*power(10,4)
答案 3 :(得分:2)
请尝试类似:
select * from table
where RIGHT(CAST(value as DECIMAL(10,5)), value), 1) != 0
答案 4 :(得分:2)
答案 5 :(得分:2)
{{1}}
答案 6 :(得分:1)
另一种解决方案:
public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
... //your functionality
if(compoundButton.isPressed()){
notifyDataSetChanged();
}
} });
答案 7 :(得分:0)
您可以将其与10000
相乘,然后将原始数字替换为.
替换''
。
select * from tablename
where replace(numcolumn,'.','') - numcolumn * 10000 > 0
答案 8 :(得分:0)
下面是检查4个小数位精度的代码:
MyNum
替换为您要检查精度的列MyTbl
4
醇>
SQL:
SELECT MyNum
, LEN(CAST (MyNum AS CHAR))
, -------1. length of decimal number, after conversion to CHAR
CHARINDEX('.', CAST (MyNum AS CHAR))
, ---2.length of numbers after the '.'
LEN(CAST (MyNum AS CHAR)) - CHARINDEX('.', CAST (MyNum AS CHAR)) -----subtracting 1-2, to get the length of numbers after decimal point '.'
FROM MyTbl
WHERE LEN(CAST(MyNum AS CHAR)) - CHARINDEX('.', CAST(MyNum AS CHAR)) > 4; --checking if there are more than 4 numbers after the decimal point '.'
答案 9 :(得分:0)
这是一个较旧的问题,但它可以结帐。
select val
from table
where ((val * 100) % 1) > 0
将精度更改为100。
答案 10 :(得分:0)
--i.e. with postgreSQL.
--1)
select data_numeric, length(arr[2]) as str_length
from (
select data_numeric, regexp_split_to_array(data_numeric::text, '\.') as arr from TABLE
) temp;
--2)
with t1 as (
select data_numeric, regexp_split_to_array(data_numeric::text, '\.') as arr from TABLE
), t2 as (
select data_numeric, arr[2] as decimals, length(arr[2]) as length from t1
)
select * from t2;
答案 11 :(得分:0)
这适用于Postgres 11:
SELECT * FROM mytable WHERE mycolumn != ROUND(mycolumn::numeric,2)
答案 12 :(得分:0)
选择小数点后2位以上的数字:
我有一个示例,其中float类型列中的值“ 2.32”的#limitedText{
padding:3px 0px 0px 29px;
display: inline-block;
text-align: left;
letter-spacing: 0px;
color: #7B7B7B;
opacity: 1;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
和((abs(val)*100)
返回了两个不同的值。
CONVERT(INT,(abs(val)*100))
在与0比较的情况下,这导致选择查询答案错误。
我认为(abs(2.32)*100) = 232
CONVERT(INT,(abs(2.32)*100)) = 231
以这样的方式处理整数,对于某些浮点数情况,发布的解决方案将不起作用。
这是我在两个小数点后的位置所做的操作:
MSSQL CONVERT()