从字符串 Webi BO 中提取数字

问题描述

我几乎是 Webi BO 的新手。我需要从字符串中提取数字。字符串如下所示: X Y Z 其中 x 是可变长度文本,Y 是需要提取的数字(长度也可以变化 0、00 或 000 或 0.00、00.00 或 000.0,...而 Z 是 5 个字符的固定长度文本。

字符串示例:

sodium chloride 0.9% + Potassium chloride 50 mL/hr

x 是氯化钠 0.9% + 氯化钾 Y 是 50 Z 为毫升/小时

需要提取Y的值。有什么公式可以帮助解决这个问题吗? 谢谢。

解决方法

这在 Web Intelligence 本身是不可能的。由于 X 的长度是可变的,而 Z 是固定的长度,所以解决这个问题的唯一方法是寻找 Y 前面的那个空间如果我们反转字符串是可能的。但是,WebI 中没有反向功能。您可以在您的 Universe 中或在自由编写的 SQL 中执行此操作吗?

这就是它在 SQL Server 中的样子...

DECLARE @MyString VARCHAR(100);
DECLARE @Length INT;
DECLARE @Y_Index INT;
DECLARE @Y_Length INT;
DECLARE @Z_Index INT;

SET @MyString = 'sodium chloride 0.9% + Potassium chloride 50 mL/hr';
-- get total string length
sET @Length = LEN(@MyString);

-- find index (starting position) of Y
SET @Y_Index = @Length - CHARINDEX(' ',REVERSE(@MyString),7) + 2;

-- find index (starting position) of Z
SET @Z_Index = @Length - CHARINDEX(' ',REVERSE(@MyString)) + 2;

SELECT
    @MyString                                                  AS [MyString],REVERSE(@MyString)                                         AS [MyStringReversed],@Length                                                    AS [MyStringLength],@Y_Index                                                   AS [Y Index],@Z_Index                                                   AS [Z Index],RTRIM(SUBSTRING(@MyString,@Y_Index,@Z_Index - @Y_Index)) AS [Y];

这是一个 link 看到它在行动。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...