Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Microsoft Access 2010 SQL拆分字符串位于;X";和乘法_Sql_Ms Access 2010 - Fatal编程技术网

Microsoft Access 2010 SQL拆分字符串位于;X";和乘法

Microsoft Access 2010 SQL拆分字符串位于;X";和乘法,sql,ms-access-2010,Sql,Ms Access 2010,我有一个表,其中有一个数据类型为文本的package size列,出于数学原因,我需要将其转换为整数。此列中的值通常看起来像“100ML”、“20GM”、“UD 20”、“13OZ”,这是比较棘手的地方,有时会出现“6X12ML”、“UD 5X6ML”等值。那些有“X”的,我需要去掉我现在正在做的“ML” Replace([TABLE_NAME].[COLUMN_NAME],"ML","") 在查询的表达式列中。我可以使用嵌套的替换函数删除“ML”、“GM”、“OZ”和“UD”。我所有的尝试都

我有一个表,其中有一个数据类型为文本的package size列,出于数学原因,我需要将其转换为整数。此列中的值通常看起来像“100ML”、“20GM”、“UD 20”、“13OZ”,这是比较棘手的地方,有时会出现“6X12ML”、“UD 5X6ML”等值。那些有“X”的,我需要去掉我现在正在做的“ML”

Replace([TABLE_NAME].[COLUMN_NAME],"ML","")
在查询的表达式列中。我可以使用嵌套的替换函数删除“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])
我尝试过使用上述代码的变体,但没有效果。所有的建议都很感谢,我希望能在一个查询中消除这个问题,但我确实意识到我可以使用and表达式,只需将“X”前后的文本拆分为两个不同的表达式列。然后使用另一个查询将这些值相乘

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)

上面的代码就是我用来完成手头任务的代码。

如果输入是“UD 5X6ML”,我想在包含30的列中输出。我知道如何用psuedo术语描述它,但我无法将psuedo转换为源代码。我终于能够创建一个功能良好的源代码。如果有人感兴趣,请查看下面我为解决问题而编写的源代码。