парсинг+обработка 'string'

A.B
Дата: 03.02.2009 15:29:25
Доброго времени суток всем.

Погите с задачкой плиз:
- Никим образом получено 2 поля: реальная РАМ, мин.необходимая РАМ (realRAM, etalonRAM)
поля стринговые, имеют след.вид, например: realRAM = '128 MB', etalonRAM = '256 MB'
- нужно высчитать разницу (на сколько память нужно увеличить): EquivalentRAM = 256 - 128

У меня возникла проблема, как можно перед конвертацией realRAM и etalonRAM в int выделить в стринге только числовую часть? Т.е. стринг в данном случае всегда начинается с цифр, через пробел оканчивается буквами. Все бы ничего, но цифр, может быть 2 (64 MB), 3 (512 MB), 4 (1024 МБ).

Подскажите плиз...
Ken@t
Дата: 03.02.2009 15:31:02
CAST ( replace ( realRAM,' MB','') AS INT )  
Glory
Дата: 03.02.2009 15:31:09
Ну и какая проблема выделить из строки подстпроку до первого пробела ?
A.B
Дата: 03.02.2009 15:33:54
Glory
Ну и какая проблема выделить из строки подстпроку до первого пробела ?

да наверное нет проблемы.. просто я не настоко доктор видно:(
A.B
Дата: 03.02.2009 15:34:35
Ken@t
CAST ( replace ( realRAM,' MB','') AS INT )  


DECLARE @EquivalentRam int
set @realRAM = CAST ( replace ( @realRAM,' MB','') AS INT )
set @etalonRAM = CAST ( replace ( @etalonRAM,' MB','') AS INT )
set @EquivalentRam = @etalonRAM - @realRAM

рез-т: Operand data type nvarchar is invalid for subtract operator.
Glory
Дата: 03.02.2009 15:35:38
A.B
Glory
Ну и какая проблема выделить из строки подстпроку до первого пробела ?

да наверное нет проблемы.. просто я не настоко доктор видно:(

Ну а изучить синтаксис функций LEFT/CHARINDEX вы настоко доктор ?
A.B
Дата: 03.02.2009 15:36:19
Ken@t
CAST ( replace ( realRAM,' MB','') AS INT )  


я в начале делал так, но данный вариант не пойдет, он тестовый, т.к. макс.кол-во цифр жестко фиксированна
DECLARE @EquivalentRam int
set @realRAM = CONVERT (int, SUBSTRING( @realRAM, 1, 4))
set @etalonRAM = CONVERT (int, SUBSTRING( @etalonRAM, 1, 4))
set @EquivalentRam = CAST(@etalonRAM AS int) - CAST(@realRAM AS int)

RETURN @EquivalentRam
A.B
Дата: 03.02.2009 15:39:12
Glory

Ну а изучить синтаксис функций LEFT/CHARINDEX вы настоко доктор ?

спасибо, вижу\нашел. Собственно о такой помощи и просил.. натолкнуть на нужную sql функцию.
A.B
Дата: 03.02.2009 16:22:33
черт, видно фиговый из меня программер, вроде все написанно, а результат не выходит:(
Подскажите все-таки плиз, как написать запрос получения левой числовой части из стринга? С использованием LEFT\CHARSET..
пример буду хранить вечно и помнить о хелпе!:)

set @realRAMdig = left (...@realRAM...)
Glory
Дата: 03.02.2009 16:23:33
A.B
черт, видно фиговый из меня программер, вроде все написанно, а результат не выходит:(
Подскажите все-таки плиз, как написать запрос получения левой числовой части из стринга? С использованием LEFT\CHARSET..
пример буду хранить вечно и помнить о хелпе!:)

set @realRAMdig = left (...@realRAM...)

Нужно найти позицию первого пробела. И взять слева на один символ меньше