2013-10-10 2 views
0

У меня есть таблица с столбцом размера пакета с типом данных, который мне нужно преобразовать в целое число по математическим причинам. Значения в этом столбце, как правило, выглядят примерно так: «100ML», «20GM», «UD 20», «13OZ» здесь, где становится сложно, иногда появляются значения, такие как «6X12ML», «UD 5X6ML». Те, с «X» в них мне нужно удалить «ML» Я сейчас делаю это сMicrosoft Access 2010 SQL Split String в «X» и Multiply

Replace([TABLE_NAME].[COLUMN_NAME],"ML","") 

в колонке выражения в запросе. Я могу использовать вложенные функции Replace для удаления «ML», «GM», «OZ» и «UD». Все мои попытки сделать это не удалось, я понял, в конце решение было бы что-то вроде

IIf([TABLE_NAME].[COLUMN_NAME] Like "X", (CInt(Left([TABLE_NAME].[COLUMN_NAME],InStr(1,[TABLE_NAME].[COLUMN_NAME],"X")-1))*CInt(Right([TABLE_NAME].[COLUMN_NAME],InStr(1,[TABLE_NAME].[COLUMN_NAME],"X")+1))),[TABLE_NAME].[COLUMN_NAME]) 

Я попытался с помощью изменения кода выше, не увенчались успехом. Все предложения приветствуются, я бы предпочел, чтобы это было выбито в одном запросе, но я понимаю, что могу использовать и выражать и просто разбивать текст до и после «X» на два столбца выражения differenct. Затем используйте другой запрос, чтобы умножить значения.

+0

Правильно, если вход «UD 5X6ML» Я хотел бы выводить в столбце, содержащем 30. –

+0

Я знал, как описать его в терминах psuedo, но я не мог превратить psuedo в источник. Наконец, я смог создать хорошо функционирующий источник. Если кто-то заинтересован, посмотрите ниже в источнике, который я написал, чтобы решить проблему. –

ответ

1
QTY_ORDERED: IIf(InStr(1,Replace(Replace(Replace(Replace([STANDARD_PRICING].[PACKAGE_AMOUNT],"GM",""),"ML",""),"UD","")," ",""),"X")>1,[CRX_HISTORIC_PO].[QUANTITY]/Left(Replace(Replace(Replace(Replace([STANDARD_PRICING].[PACKAGE_AMOUNT],"GM",""),"ML",""),"UD","")," ",""),InStr(1,Replace(Replace(Replace(Replace([STANDARD_PRICING].[PACKAGE_AMOUNT],"GM",""),"ML",""),"UD","")," ",""),"X")-1)*Right(Replace(Replace(Replace(Replace([STANDARD_PRICING].[PACKAGE_AMOUNT],"GM",""),"ML",""),"UD","")," ",""),Len(Replace(Replace(Replace(Replace([STANDARD_PRICING].[PACKAGE_AMOUNT],"GM",""),"ML",""),"UD","")," ",""))-InStr(1,Replace(Replace(Replace(Replace([STANDARD_PRICING].[PACKAGE_AMOUNT],"GM",""),"ML",""),"UD","")," ",""),"X"))*-1,[CRX_HISTORIC_PO].[QUANTITY]/Replace(Replace(Replace(Replace([STANDARD_PRICING].[PACKAGE_AMOUNT],"GM",""),"ML",""),"UD","")," ","")*-1) 

Код, указанный выше, является тем, что я использовал для выполнения задачи.

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