友
我需要从查询结果中对文本值进行子串。在我的示例结果中,我想解析字母前面的数字值" MG"或" MCG"。这些是我试图获得的剂量。
示例数据:
PEGASYS 180 MCG/0.5 ML SYRI
INCIVEK 375 MG TABLET
RIBA-PAK TAB 800MG/DAY T/R
我相信我可以通过找到MG的索引位置,然后从那里子串。不确定如何。
任何帮助都将不胜感激。
答案 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