Fungsi IndexOf dalam T-SQL


168

Diberikan kolom alamat email, saya perlu menemukan posisi tanda @ untuk substring.

Apa indexoffungsinya, untuk string dalam T-SQL?

Mencari sesuatu yang mengembalikan posisi substring dalam sebuah string.

dalam C #

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

Jawaban:


248

CHARINDEX adalah apa yang Anda cari

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

(1 row(s) affected)

-atau-

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

(1 row(s) affected)

67

Anda dapat menggunakan CHARINDEX atau PATINDEX untuk mengembalikan posisi awal ekspresi yang ditentukan dalam string karakter.

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

Pikiran bahwa Anda perlu menggunakan wildcard di PATINDEX di kedua sisi.


35

Satu nit yang sangat kecil untuk dipilih:

RFC untuk alamat email memungkinkan bagian pertama menyertakan tanda "@" jika dikutip. Contoh:

"john@work"@myemployer.com

Ini sangat jarang, tetapi bisa terjadi. Secara teoritis, Anda harus membelah pada simbol "@" terakhir , bukan yang pertama:

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

Informasi lebih lanjut:

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


ini adalah hal-hal yang saya coba tentukan dan perbaiki dalam database kami. Terutama orang salah ketik nama domain mereka. kebanyakan web redirect kembali ke salah satu nyata tetapi catatan mx tidak maju, dan menampilkan mereka mendapat canggung
DevelopingChris

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.