이메일 주소 열이 주어지면 하위 문자열에 대한 @ 기호의 위치를 찾아야합니다.
indexof
T-SQL의 문자열에 대한 기능 은 무엇입니까 ?
문자열 내에서 부분 문자열의 위치를 반환하는 무언가를 찾고 있습니다.
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 를 사용 하여 지정된 표현식의 시작 위치를 문자열로 리턴 할 수 있습니다 .
CHARINDEX('bar', 'foobar') == 4
PATINDEX('%bar%', 'foobar') == 4
양쪽의 PATINDEX에 와일드 카드를 사용해야합니다.
답변
선택할 수있는 매우 작은 니트 :
이메일 주소에 대한 RFC를 사용하면 첫 번째 부분에 “@”부호를 붙일 수 있습니다. 예:
"john@work"@myemployer.com
이것은 매우 드물지만 발생할 수 있습니다. 이론적으로 첫 번째가 아닌 마지막 “@”기호로 분할해야합니다 .
SELECT LEN(EmailField) - CHARINDEX('@', REVERSE(EmailField)) + 1
추가 정보:
http://en.wikipedia.org/wiki/Email_address