Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从数值中删除SQL Server中最后一个数值中的零_Sql_Sql Server_Sql Server 2008 - Fatal编程技术网

从数值中删除SQL Server中最后一个数值中的零

从数值中删除SQL Server中最后一个数值中的零,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我在SQL Server中有一个numeric列,我的值如下所示: 4.00 6.25 6.00 6.80 10.00 12.00 我想展示一下 4 6.25 6 6.8 10 12 提前感谢只需将您的数值传递到''中的圆形功能中,如下所示: SELECT ROUND('4.00', 2) SELECT ROUND('6.25', 2) SELECT ROUND('6.00', 2) SELECT ROUND('6.80', 2) 结果: 只需在''中传递数值,在圆形中传递值

我在SQL Server中有一个
numeric
列,我的值如下所示:

 4.00
 6.25
 6.00
 6.80
10.00
12.00
我想展示一下

4
6.25
6
6.8
10
12

提前感谢

只需将您的
数值传递到
''
中的
圆形
功能中,如下所示:

SELECT ROUND('4.00', 2)

SELECT ROUND('6.25', 2)

SELECT ROUND('6.00', 2)

SELECT ROUND('6.80', 2)
结果:


只需在
''
中传递
数值,在
圆形中传递
值,如下所示:

SELECT ROUND('4.00', 2)

SELECT ROUND('6.25', 2)

SELECT ROUND('6.00', 2)

SELECT ROUND('6.80', 2)
结果:

您可以尝试:

select round(CONVERT (VARCHAR(50), 6.00,128),2)
您可以尝试:

select round(CONVERT (VARCHAR(50), 6.00,128),2)

如果列数据类型为数字(18,2),则可以创建自己的函数:

use db_test;
go

create function dbo.trunc_numeric (@value numeric(18, 2))
returns varchar(20)
as
begin
    declare @a bigint = (@value * 100) % 100;
    declare @b bigint = (@value * 100) % 10;
    if @a = 0
        return cast(cast(@value as numeric(18, 0)) as varchar(20));
    if @a <> 0 and @b = 0
        return cast(cast(@value as numeric(18, 1)) as varchar(20));
    return cast(@value as varchar(20));
end

select dbo.trunc_numeric(10.123);
select dbo.trunc_numeric(10.120);
select dbo.trunc_numeric(10.100);
select dbo.trunc_numeric(10.000);
使用db_测试;
去
创建函数dbo.trunc_numeric(@value numeric(18,2))
返回varchar(20)
作为
开始
声明@a bigint=(@value*100)%100;
声明@b bigint=(@value*100)%10;
如果@a=0
返回cast(cast(@value作为数值(18,0))作为varchar(20));
如果@a 0和@b=0
返回cast(cast(@value作为数值(18,1))作为varchar(20));
返回cast(@值为varchar(20));
结束
选择dbo.trunc\u numeric(10.123);
选择dbo.trunc\u numeric(10.120);
选择dbo.trunc\u numeric(10.100);
选择dbo.trunc\u numeric(10.000);

如果列数据类型为数字(18,2),则可以创建自己的函数:

use db_test;
go

create function dbo.trunc_numeric (@value numeric(18, 2))
returns varchar(20)
as
begin
    declare @a bigint = (@value * 100) % 100;
    declare @b bigint = (@value * 100) % 10;
    if @a = 0
        return cast(cast(@value as numeric(18, 0)) as varchar(20));
    if @a <> 0 and @b = 0
        return cast(cast(@value as numeric(18, 1)) as varchar(20));
    return cast(@value as varchar(20));
end

select dbo.trunc_numeric(10.123);
select dbo.trunc_numeric(10.120);
select dbo.trunc_numeric(10.100);
select dbo.trunc_numeric(10.000);
使用db_测试;
去
创建函数dbo.trunc_numeric(@value numeric(18,2))
返回varchar(20)
作为
开始
声明@a bigint=(@value*100)%100;
声明@b bigint=(@value*100)%10;
如果@a=0
返回cast(cast(@value作为数值(18,0))作为varchar(20));
如果@a 0和@b=0
返回cast(cast(@value作为数值(18,1))作为varchar(20));
返回cast(@值为varchar(20));
结束
选择dbo.trunc\u numeric(10.123);
选择dbo.trunc\u numeric(10.120);
选择dbo.trunc\u numeric(10.100);
选择dbo.trunc\u numeric(10.000);
您可以这样做

SELECT  ROUND(CAST(col AS VARCHAR), 2) AS [Number]
FROM(
     SELECT 4.00 AS col
     UNION ALL
     SELECT 6.25 AS col
     UNION ALL
     SELECT 6.00 AS col
     UNION ALL
     SELECT 6.80 AS col
     UNION ALL
     SELECT 10.00 AS col
     UNION ALL
     SELECT 12.00 AS col
)x
你可以这样做

SELECT  ROUND(CAST(col AS VARCHAR), 2) AS [Number]
FROM(
     SELECT 4.00 AS col
     UNION ALL
     SELECT 6.25 AS col
     UNION ALL
     SELECT 6.00 AS col
     UNION ALL
     SELECT 6.80 AS col
     UNION ALL
     SELECT 10.00 AS col
     UNION ALL
     SELECT 12.00 AS col
)x

显示在哪里?格式化数据不是数据库的责任,您应该在显示数据的地方进行。它是数字(18,2)吗?在哪里显示?格式化数据不是数据库的责任,您应该在显示数据的地方进行。它是数字(18,2)吗?如果数字是浮点数,则错误。@Yogesh…thnx。如果数字是浮点数,则错误。@Yogesh…thnx。128???+0(默认值)的含义是什么?最多6位。适当时,在科学记数法中使用+1-始终为8位数字。始终使用科学记数法2-始终为16位数字。始终使用科学记数法126、128、129-由于遗留原因而包括在内,在未来的版本中可能会被弃用。您可以使用其中的1个。128°+0(默认值)的含义是什么?最多6位。适当时,在科学记数法中使用+1-始终为8位数字。始终使用科学记数法2-始终为16位数字。始终使用科学记数法126、128、129-由于遗留原因而包括在内,在未来的版本中可能会被弃用。你可以使用其中的一个。