2015-08-20 6 views
2

Я хочу рассчитать длину значений в числовом столбце. Значения случайным образом равныSQL Server: вычислять длину до десятичных знаков

255.0125 , 28847.0125 etc 

Мне нужна длина значений до десятичных знаков. Пока что первое значение должно быть 3, для второго значения должно быть значение 5.

Что может быть полезной здесь функция SQL.

ответ

4

Предлагаю использовать функцию 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 
+0

SELECT LEN (FLOOR (9.99999)) отлично работает для меня. Спасибо за Quick help @ Deepanshu – Tayyab

1

Try:

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)) 

Или

EDIT 2Предложение по deepanshu-kalra : функция

SELECT LEN(FLOOR(9.99999)) 
+2

пол может быть также использован. 'SELECT LEN (FLOOR (9.99999))'. Я бы предпочел это. –

+0

да, true.i'm добавление этого к моему ответу. @DeepanshuKalra –

+0

ура. Спасибо за добавление. –

0

Использование ROUND(), которая преобразует десятичное в целое, а затем использовать LEN()

запрос будет

select LEN(ROUND('255.0125', 0)) 

ROUND() функция systax :

ROUND(value,decimalPlace) 
+1

это не сработает 'SELECT LEN (ROUND ('9.99999', 0))' –

Смежные вопросы