IndexOf function in T-SQL

前端 未结 4 1124
广开言路
广开言路 2020-12-09 00:43

Given an email address column, I need to find the position of the @ sign for substringing.

What is the indexof function, for strings in T-SQL?

L

相关标签:
4条回答
  • 2020-12-09 00:56

    You can use either CHARINDEX or PATINDEX to return the starting position of the specified expression in a character string.

    CHARINDEX('bar', 'foobar') == 4
    PATINDEX('%bar%', 'foobar') == 4
    

    Mind that you need to use the wildcards in PATINDEX on either side.

    0 讨论(0)
  • 2020-12-09 00:57

    CHARINDEX is what you are looking for

    select CHARINDEX('@', 'someone@somewhere.com')
    -----------
    8
    
    (1 row(s) affected)
    

    -or-

    select CHARINDEX('c', 'abcde')
    -----------
    3
    
    (1 row(s) affected)
    
    0 讨论(0)
  • 2020-12-09 01:06

    One very small nit to pick:

    The RFC for email addresses allows the first part to include an "@" sign if it is quoted. Example:

    "john@work"@myemployer.com
    

    This is quite uncommon, but could happen. Theoretically, you should split on the last "@" symbol, not the first:

    SELECT LEN(EmailField) - CHARINDEX('@', REVERSE(EmailField)) + 1
    

    More information:

    http://en.wikipedia.org/wiki/Email_address

    0 讨论(0)
  • 2020-12-09 01:15

    I believe you want to use CHARINDEX. You can read about it here.

    0 讨论(0)
提交回复
热议问题