SQL 服务器 - 删除十进制后的值(非整型字段)

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

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

不转换字段类型,想去掉最后n个字符,但是每行的字符数不同。我相信我可以使用 ROUND(如果错误请纠正我),但宁愿不使用。

试试这个

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

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

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

试试这个:

SELECT  SUBSTRING(Your_column, 1, PATINDEX('%.%', Your_column) + 3)
FROM    Your_Table
select  CASE    WHEN    CHARINDEX('.', Your_column) > 0 
                THEN    SUBSTRING(Your_column, 1, CHARINDEX('.', Your_column) + 3)
                ELSE    Your_column
        END

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