【发布时间】:2015-11-14 00:54:24
【问题描述】:
我想计算数值列中值的长度。这些值是随机的
255.0125 , 28847.0125 etc
我只需要小数位前的值的长度。到目前为止,第一个值应该是 3,第二个值应该是 5。
什么 SQL 函数在这里会有所帮助。
【问题讨论】:
标签: sql-server sql-server-2008
我想计算数值列中值的长度。这些值是随机的
255.0125 , 28847.0125 etc
我只需要小数位前的值的长度。到目前为止,第一个值应该是 3,第二个值应该是 5。
什么 SQL 函数在这里会有所帮助。
【问题讨论】:
标签: sql-server sql-server-2008
我建议使用FLOOR函数,如果数字可以是负数,也添加ABS:
SELECT LEN(FLOOR(9.99999))
SELECT LEN(FLOOR(ABS(-9.99999)))
这会失败
SELECT LEN(cast(-9.99999 as int))--Result 2
SELECT LEN(FLOOR(-9.99999))--Result 3
【讨论】:
试试:
select len(cast(999999999.99999 as int))
select len(cast(28847.0125 as int))
或者
select len(cast('28847.0125' as decimal))
或者
select len(round('28847.0125', 0, 1))
或者
编辑 2 deepanshu-kalra的建议 :
SELECT LEN(FLOOR(9.99999))
【讨论】:
SELECT LEN(FLOOR(9.99999))。我会更喜欢这个。
使用 ROUND() 函数,将十进制转换为 int,然后使用 LEN()
查询将是
select LEN(ROUND('255.0125', 0))
ROUND() 函数语法:
ROUND(value,decimalPlace)
【讨论】:
SELECT LEN(ROUND('9.99999', 0))