SQL Server - 在Decimal之后删除值(非int字段)

时间:2016-04-22 14:17:01

标签: sql sql-server decimal rounding nvarchar

在SQL表中有一个ncarchar(MAX)字段。它有717.08064182582,39.0676048113等数字,其中我需要在小数点后只有3个位置。例如717.080,39.067。

如果不转换字段类型,想要删除最后n个字符,但每行都有不同的字符数。我相信我可以使用ROUND(如果错误则纠正我),但不愿意。

3 个答案:

答案 0 :(得分:1)

试试这个

SELECT CAST(ColumnName AS DECIMAL(18,3))

不转换数据类型按 @vkp 评论

SELECT SUBSTRING(ColumnName ,0,CHARINDEX('.', ColumnName )+4)

答案 1 :(得分:1)

select  CASE    WHEN    CHARINDEX('.', Your_column) > 0 
                THEN    SUBSTRING(Your_column, 1, CHARINDEX('.', Your_column) + 3)
                ELSE    Your_column
        END

这与之前的答案类似,但更快更安全

答案 2 :(得分:0)

试试这个:

SELECT  SUBSTRING(Your_column, 1, PATINDEX('%.%', Your_column) + 3)
FROM    Your_Table