小编Sus*_*ang的帖子

为什么即使提供了准确的数据,FLOAT 类型的数据比较也不起作用

在真实表中具有相同的值

SELECT * FROM float_value WHERE val = 49640.2473896214 -- No data returns
Run Code Online (Sandbox Code Playgroud)

如果我将其四舍五入到总精度,那么它就可以工作

SELECT * FROM float_value WHERE ROUND(val, 10) = ROUND(49640.2473896214, 10) --Returning Data
Run Code Online (Sandbox Code Playgroud)

之后,我创建了具有相同值的临时表49640.2473896214,它在上面失败的第一个查询中工作

CREATE TABLE #testing(Vvalue FLOAT)
INSERT INTO #testing VALUES (49640.2473896214)

SELECT * FROM #testing WHERE Vvalue = 49640.2473896214 -- Simply returning row
Run Code Online (Sandbox Code Playgroud)

您能帮我弄清楚为什么=上面的比较不起作用吗?如果我应该使用ROUNDalways,那么计算出要舍入和比较的精度将是另一个问题。

如果我们提供在字段中完全可见的输入,即= 49640.2473896214应该返回值,我想要结果。

先感谢您。

sql sql-server floating-point precision sql-server-2012

5
推荐指数
1
解决办法
2973
查看次数

创建表时sql出错

我正在尝试在我的数据库上创建一个表。这是错误

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ') NOT NULL , `ctc` DOUBLE(5) NOT NULL , `ref` VARCHAR(50) NOT NULL , `date` D' at line 1
Run Code Online (Sandbox Code Playgroud)

我的查询:

CREATE TABLE `job`.`form_details` ( 
    `email_id` VARCHAR(50) NOT NULL , 
    `name` VARCHAR(50) NOT NULL , 
    `number` VARCHAR(14) NOT NULL , 
    `city` VARCHAR(50) NOT NULL , 
    `skill` VARCHAR(50) NOT NULL , 
    `qualification` VARCHAR(50) NOT …
Run Code Online (Sandbox Code Playgroud)

mysql sql ddl syntax-error create-table

1
推荐指数
1
解决办法
1548
查看次数

计算错误的两天之间的周数和部分周数

为什么这返回 4 而不是 6?

SET DATEFIRST 1
SELECT DATEDIFF(WEEK, CAST('2017-01-01' AS DATE), CAST('2017-01-31' AS DATE))
Run Code Online (Sandbox Code Playgroud)

作为日期部分的周是否仅从monday - sunday(整周)计算周数?如何获得所有周 - 包括那些没有的seven days?在上述情况下,答案应该是6

t-sql sql-server

0
推荐指数
1
解决办法
2052
查看次数

当日期列以毫秒为单位时,如何仅按日期分组?

表中的日期列以毫秒为单位,现在我想DATE单独分组,不包括以下内容

hours, minutes, seconds, milliseconds
Run Code Online (Sandbox Code Playgroud)

mysql sql

0
推荐指数
1
解决办法
195
查看次数