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


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

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

Пример: 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
2 3

2 ответа:

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

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

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

select cast(isnull(replace('0' + @createNumber, 'mm', ''), 0) as decimal(6,3))