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
这与之前的答案类似,但更快更安全
在 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
这与之前的答案类似,但更快更安全