代码之家  ›  专栏  ›  技术社区  ›  DevelopingChris

T-SQL中的函数索引

  •  162
  • DevelopingChris  · 技术社区  · 15 年前

    给定一个电子邮件地址列,我需要找到子字符串@符号的位置。

    什么是 indexof 函数,用于T-SQL中的字符串?

    查找返回字符串中子字符串位置的内容。

    在C中

    var s = "abcde";
    s.IndexOf('c'); // yields 2
    
    4 回复  |  直到 7 年前
        1
  •  240
  •   Scott Ivey    12 年前

    CHARINDEX 是你要找的

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

    -或

    select CHARINDEX('c', 'abcde')
    -----------
    3
    
    (1 row(s) affected)
    
        2
  •  62
  •   OMG Ponies    15 年前

    你可以使用 CHARINDEX PATINDEX 返回字符串中指定表达式的起始位置。

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

    请注意,您需要在两边的patindex中使用通配符。

        3
  •  34
  •   richardtallent    15 年前

    一个非常小的小玩意:

    电子邮件地址的RFC允许第一部分在引用时包含“@”符号。例子:

    "john@work"@myemployer.com
    

    这很少见,但可能会发生。理论上,你应该在 最后的 “@”符号,不是第一个:

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

    更多信息:

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

        4
  •  11
  •   Justin Swartsel    15 年前

    我相信你想用 CHARINDEX . 你可以读到它 here .