【发布时间】:2010-12-24 13:51:19
【问题描述】:
给定一个电子邮件地址列,我需要找到 @ 符号的位置以进行子字符串化。
对于 T-SQL 中的字符串,indexof 函数是什么?
寻找返回字符串中子字符串位置的东西。
在 C# 中
var s = "abcde";
s.IndexOf('c'); // yields 2
【问题讨论】:
标签: sql sql-server tsql string
给定一个电子邮件地址列,我需要找到 @ 符号的位置以进行子字符串化。
对于 T-SQL 中的字符串,indexof 函数是什么?
寻找返回字符串中子字符串位置的东西。
在 C# 中
var s = "abcde";
s.IndexOf('c'); // yields 2
【问题讨论】:
标签: sql sql-server tsql string
CHARINDEX 就是你要找的东西
select CHARINDEX('@', 'someone@somewhere.com')
-----------
8
(1 row(s) affected)
-或-
select CHARINDEX('c', 'abcde')
-----------
3
(1 row(s) affected)
【讨论】:
一个非常小的选择:
电子邮件地址的 RFC 允许第一部分在引用时包含“@”符号。示例:
"john@work"@myemployer.com
这很罕见,但可能会发生。理论上,你应该在 last "@" 符号上拆分,而不是第一个:
SELECT LEN(EmailField) - CHARINDEX('@', REVERSE(EmailField)) + 1
更多信息:
【讨论】:
我相信你想使用CHARINDEX。你可以阅读它here。
【讨论】: