关于SQL Server:SQL Server-删除十进制后的值(非int字段)

SQL Server - Delete Values after Decimal (non-int field)

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

在不转换字段类型的情况下,希望摆脱最后的n个字符,但是每一行都有不同数量的字符。我相信我可以使用ROUND(如果有错,请更正我),但宁愿不使用。


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

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


试试这个

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

不将其转换为@vkp注释的数据类型

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


尝试一下:

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