Biorąc pod uwagę kolumnę adresu e-mail, muszę znaleźć pozycję znaku @ dla podłańcucha.
Jaka jest indexof
funkcja dla ciągów znaków w T-SQL?
Szukasz czegoś, co zwraca pozycję podciągu w ciągu.
w C #
var s = "abcde";
s.IndexOf('c'); // yields 2
Biorąc pod uwagę kolumnę adresu e-mail, muszę znaleźć pozycję znaku @ dla podłańcucha.
Jaka jest indexof
funkcja dla ciągów znaków w T-SQL?
Szukasz czegoś, co zwraca pozycję podciągu w ciągu.
w C #
var s = "abcde";
s.IndexOf('c'); // yields 2
Odpowiedzi:
CHARINDEX jest tym, czego szukasz
select CHARINDEX('@', 'someone@somewhere.com')
-----------
8
(1 row(s) affected)
-lub-
select CHARINDEX('c', 'abcde')
-----------
3
(1 row(s) affected)
Jedna bardzo mała nitka do wybrania:
Dokument RFC dla adresów e-mail pozwala, aby pierwsza część zawierała znak „@”, jeśli jest cytowany. Przykład:
"john@work"@myemployer.com
Jest to dość rzadkie, ale może się zdarzyć. Teoretycznie należy podzielić na ostatni symbol „@”, a nie pierwszy:
SELECT LEN(EmailField) - CHARINDEX('@', REVERSE(EmailField)) + 1
Więcej informacji:
Wierzę, że chcesz użyć CHARINDEX
. Możesz o tym przeczytać tutaj .