在 SQL 中划分

Tom*_*Tom 2 sql-server t-sql

谁能向我解释为什么这个查询返回 0.000?

SELECT CAST(20/1024 AS NUMERIC(10,3))
Run Code Online (Sandbox Code Playgroud)

我只是想简单地将 MB 转换为 GB

谢谢

Seb*_*ine 7

您首先进行整数除法,然后转换结果。在0整数除法结果转换0至NUMERIC(10,3)在结果中0.000

SQL小提琴

MS SQL Server 2008 架构设置

查询 1

SELECT 20/1024;
Run Code Online (Sandbox Code Playgroud)

结果

| COLUMN_0 |
------------
|        0 |
Run Code Online (Sandbox Code Playgroud)

要获得非整数除法,您需要至少将所涉及的两个数字中的一个转换为整数以外的数字。在数字文字的情况下,您可以.在数字后添加一个:

查询 2

SELECT 20./1024;
Run Code Online (Sandbox Code Playgroud)

结果

| COLUMN_0 |
------------
| 0.019531 |
Run Code Online (Sandbox Code Playgroud)

对于变量或列,您需要使用CAST或转换其中之一CONVERT

查询 3

SELECT 20/CAST(1024 AS NUMERIC(10,3));
Run Code Online (Sandbox Code Playgroud)

结果

|   COLUMN_0 |
--------------
| 0.01953125 |
Run Code Online (Sandbox Code Playgroud)