从字符串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是50Z为mL/hr

需要提取Y的值。在这方面有什么公式可以帮助吗?非常感谢。

这在Web Intelligence中是不可能的。由于X的长度是可变的,而Z是固定的长度,解决这一问题的唯一方法是寻找Y前面的空间,如果我们反转字符串,这是可能的。但是,WebI中没有反向函数。你能在你的宇宙中或在自由的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];

这里有一个链接,看看它在行动。

最新更新