如何从sql列中提取文本

时间:2012-04-03 05:37:33

标签: sql

我在sql表的列中有一个模式..

  

如果配对不成功,       重申配对过程。       如果配对仍然不成功,请更换电机。

我希望提取“配对仍然不成功”的文字。第二个文本后面的“.IF”在“,”之后,以及逗号之后的文本必须是REPLACE或REPAIR或TEST ..

我试过这种方式..

  

SUBSTRING(TextName,(PATINDEX('%。IF%,%',TextName)+ 9),20)

子字符串的第三部分目前是硬编码的,但是如何对查询进行分类。

由于 RAMM

1 个答案:

答案 0 :(得分:3)

-- Test Data
DECLARE @T TABLE(
    TextName NVARCHAR(4000)
)

INSERT INTO @T
SELECT 'IF PAIRING IS NOT SUCCESSFUL, REPEAT THE PAIRING PROCESS. IF PAIRING IS STILL NOT SUCCESSFUL, REPLACE THE MOTOR.'

INSERT INTO @T
SELECT 'IF NOT WITHIN THE SPECIFIED RANGE, TEST THE MOTOR FOR A SV, SG, OR AN OHR. IF THE CIRCUIT TESTS NORMAL, REPLACE THE MOTOR.'


-- Example Query

SELECT SUBSTRING(TextName, PosPeriod, PosComma - PosPeriod) 'String1'
FROM
(
    SELECT TextName,
        CHARINDEX('.', TextName) + 5 'PosPeriod', -- 5 is to skip over the '. IF '        
        CHARINDEX(',', TextName, CHARINDEX('.', TEXTName)+1 ) 'PosComma'
    FROM @T
) TEMPTABLE