T-SQL中的IndexOf函数
给定一个电子邮件地址列,我需要find@符号的子位置的位置。
T-SQL中的string的indexof
函数是什么?
寻找返回string中子string位置的东西。
在C#
var s = "abcde"; s.IndexOf('c'); // yields 2
CHARINDEX是你正在寻找的
select CHARINDEX('@', 'someone@somewhere.com') ----------- 8 (1 row(s) affected)
-要么-
select CHARINDEX('c', 'abcde') ----------- 3 (1 row(s) affected)
您可以使用CHARINDEX或PATINDEX以stringforms返回指定expression式的起始位置。
CHARINDEX('bar', 'foobar') == 4 PATINDEX('%bar%', 'foobar') == 4
请注意,您需要在PATINDEX中使用通配符。
一个非常小的挑剔:
电子邮件地址的RFC允许第一部分引用“@”符号。 例:
"john@work"@myemployer.com
这是非常罕见的,但可能会发生。 从理论上说,你应该分割最后的 “@”符号,而不是第一个:
SELECT LEN(EmailField) - CHARINDEX('@', REVERSE(EmailField)) + 1
更多信息:
我相信你想使用CHARINDEX
。 你可以在这里阅读。