来自sql查询结果的子串

时间:2014-08-25 20:43:29

标签: sql sql-server sql-server-2008

我需要从查询结果中对文本值进行子串。在我的示例结果中,我想解析字母前面的数字值" MG"或" MCG"。这些是我试图获得的剂量。

示例数据:

PEGASYS 180 MCG/0.5 ML SYRI
INCIVEK 375 MG TABLET
RIBA-PAK TAB 800MG/DAY T/R

我相信我可以通过找到MG的索引位置,然后从那里子串。不确定如何。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。这就是我实施的。任何反馈都将不胜感激。

ALTER FUNCTION fn_GetDosageFromProductDescription (     @InputString VARCHAR(MAX) ) 退货VARCHAR(MAX) 如 开始 DECLARE @Dosage VARCHAR(MAX),@ Description VARCHAR(MAX),@ Index INT

    -- Remove all spaces from string
    SELECT @Description = REPLACE(@InputString, ' ', '')

    -- Find the index position for the first number within the string
    SELECT @Index = PATINDEX('%[0-9]%', @Description)

    -- Get the substring starting at the position of the first number, then all remaining
    -- characters in string
    SELECT @Description = SUBSTRING(@Description, @Index, 100)

    -- Substring again from the the 0 of the first substring value, until we get to the
    -- next instance of a letter
    SELECT @Dosage = SUBSTRING(@Description, 0, PATINDEX('%[A-Za-z]%', @Description))

RETURN @Dosage 结束 GO