удалить конечные символы, чтобы получить числовое значение

Я изо всех сил пытаюсь объединить два выражения в одно, чтобы удалить конечные символы 'mm' столбца varchar, который содержит такие значения, как 3,214 мм, и использовать эти символы как числовые ценности.

У меня проблема в том, что могут быть нулевые или пустые строковые значения, и я не могу найти способ объединить оба выражения ниже.

Пример: SQLfiddle

DECLARE @string varchar(128)
SET @string = '4.123mm'
SELECT ISNULL(NULLIF(@string,''),NULL) As MyString ;

DECLARE @createNumber varchar(128)
SET @createNumber = '4.123mm'
select LEFT(@createNumber, NULLIF (LEN(@createNumber) - 2, - 1))As MyNumber

person Tony Clifton    schedule 27.09.2013    source источник
comment
Немного безвкусно, но знаете ли вы, что размеры в миллиметрах? Можно подумать о замене mm на .   -  person asantaballa    schedule 27.09.2013
comment
Также некоторые интересные идеи, если они немного процедурны здесь: stackoverflow.com/questions/106206/   -  person asantaballa    schedule 27.09.2013


Ответы (2)


DECLARE @createNumber varchar(128)
SET @createNumber = ''
select reverse(stuff(reverse(@createNumber), 1,2, ''))

Это вернет ноль, если createnumber короче 2 символов.

person t-clausen.dk    schedule 27.09.2013

Один из способов обработки mm/''/null;

select cast(isnull(replace('0' + @createNumber, 'mm', ''), 0) as decimal(6,3))
person Alex K.    schedule 27.09.2013