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 |