T-SQL의 IndexOf 함수


168

이메일 주소 열이 주어지면 하위 문자열에 대한 @ 기호의 위치를 ​​찾아야합니다.

indexofT-SQL의 문자열에 대한 기능 은 무엇입니까 ?

문자열 내에서 부분 문자열의 위치를 ​​반환하는 무언가를 찾고 있습니다.

C #에서

var s = "abcde";
s.IndexOf('c'); // yields 2

답변:


248

CHARINDEX 는 당신이 찾고있는 것입니다.

select CHARINDEX('@', 'someone@somewhere.com')
-----------
8

(1 row(s) affected)

-또는-

select CHARINDEX('c', 'abcde')
-----------
3

(1 row(s) affected)

67

CHARINDEX 또는 PATINDEX 를 사용 하여 지정된 표현식의 시작 위치를 문자열로 리턴 할 수 있습니다 .

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

양쪽의 PATINDEX에 와일드 카드를 사용해야합니다.


35

선택할 수있는 매우 작은 니트 :

이메일 주소에 대한 RFC를 사용하면 첫 번째 부분에 "@"부호를 붙일 수 있습니다. 예:

"john@work"@myemployer.com

이것은 매우 드물지만 발생할 수 있습니다. 이론적으로 첫 번째가 아닌 마지막 "@"기호로 분할해야합니다 .

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

추가 정보:

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


이것들은 내가 데이터베이스에서 결정하고 고치려고하는 것들입니다. 주로 사람들은 도메인 이름을 잘못 입력합니다. 대부분의 웹 리디렉션은 실제 웹 리디렉션으로 돌아가지만 mx 레코드는 전달되지 않으며 표시가 어색해집니다
DevelopingChris

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.