【发布时间】:2016-08-16 05:27:42
【问题描述】:
在 SQL 表中有一个 ncarchar(MAX) 字段。它有 717.08064182582、39.0676048113 等数字,其中我只需要小数点后 3 位。例如 717.080、39.067。
在不转换字段类型的情况下,想去掉最后 n 个字符,但是每一行都有不同数量的字符。我相信我可以使用 ROUND(如果错了请纠正我),但我宁愿不使用。
【问题讨论】:
-
SELECT CASE WHEN PATINDEX('%.%', @nvar) > 0 THEN SUBSTRING(@nvar, 1, PATINDEX('%.%', @nvar) + 3) ELSE @nvar END -
我的问题是你为什么首先将数字存储为字符串???
-
@SeanLange 也许它是那些邪恶的 EAV 表之一
-
@JamieD77 哈哈。我不认为所有的 EAV 都是邪恶的,但这很可能就是这种情况。
标签: sql sql-server decimal rounding nvarchar