TSQL和Modulo

时间:2014-01-02 22:09:53

标签: sql-server tsql math modulo

我如何在T-Sql中执行此操作:

SQRT(id) % 1 = 0

我无法转换Sqrt()函数的结果,因为这会使上面的逻辑变得无用。 关于如何实现这一目标的任何想法?

由于

3 个答案:

答案 0 :(得分:1)

要查看sqrt是否为完整,请尝试以下操作:SQRT(id) * SQRT(id) = id。但这可能会遇到浮点精度问题。我认为这可以确保所有数字达到一定的阈值:

CONVERT(INT, SQRT(id)) * CONVERT(INT, SQRT(id)) = id

在阈值之后,精度将不够。你会看到假阴性,但从不会出现误报。

答案 1 :(得分:1)

你可以这样做:

floor(sqrt(id)) = sqrt(id)

答案 2 :(得分:0)

您可以将其转换为varchar,然后取小数点后的substring。更多信息:http://dbaspot.com/sqlserver-programming/411976-how-get-numbers-after-decimal-tsql.html