SQL在特定字符串之前和之后获取字符串

时间:2018-08-22 01:57:19

标签: sql sql-server

我想在第一个逗号之后和第二个逗号之前获取字符串。

对于以下示例,输出应为7GWW90330P15

在SQL中

7GWW90330P14,7GWW90330P15,7GWW90330P16,7GWW90330P17

3 个答案:

答案 0 :(得分:1)

使用此方法:

SELECT SUBSTRING(
       colname
     , CHARINDEX(',',colname) + 1
     , CHARINDEX(',',colname,CHARINDEX(',',colname)) - 1
     ) 

答案 1 :(得分:0)

如果始终是第二个字符串

select  *
from    
    (
        select  col = '7GWW90330P14,7GWW90330P15,7GWW90330P16,,7GWW90330P17'
    ) t
    cross apply
    (
        select  idx1 = charindex(',', col),
            col1 = substring(col, 1, charindex(',', col) - 1)
    ) f
    cross apply
    (
        select  idx2 = charindex(',', col, idx1 + 1),
            col2 = substring(col, idx1 + 1, charindex(',', col) - 1)
    ) s

您可以将其扩展到第三,第四等。但是,如果您正在寻找更通用的名称,例如nth字符串,则需要使用字符串拆分功能。

答案 2 :(得分:0)

如果您希望第二个字符串和代码的大小相同,则:

select (case when str like ',,%'
             then ''
             when str like ',%'
             then substring(str, 2, 12)
             else substring(str, 13, 12)
        end)

这不能很好地概括,但确实可以回答您的特定问题。