เมื่อระบุคอลัมน์ที่อยู่อีเมลฉันจำเป็นต้องค้นหาตำแหน่งของเครื่องหมาย @ สำหรับการสตริงย่อย
อะไรคือสิ่งที่indexof
ฟังก์ชั่นสำหรับสตริงใน T-SQL?
ค้นหาสิ่งที่ส่งคืนตำแหน่งของสตริงย่อยภายในสตริง
ใน C #
var s = "abcde";
s.IndexOf('c'); // yields 2
เมื่อระบุคอลัมน์ที่อยู่อีเมลฉันจำเป็นต้องค้นหาตำแหน่งของเครื่องหมาย @ สำหรับการสตริงย่อย
อะไรคือสิ่งที่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)
หนึ่งนิดหน่อยที่เล็กมากที่จะเลือก:
RFC สำหรับที่อยู่อีเมลอนุญาตให้ส่วนแรกรวมเครื่องหมาย "@" หากมีการเสนอราคา ตัวอย่าง:
"john@work"@myemployer.com
สิ่งนี้ค่อนข้างแปลก แต่อาจเกิดขึ้นได้ ในทางทฤษฎีคุณควรแยกสัญลักษณ์ "@" สุดท้ายไม่ใช่อันแรก:
SELECT LEN(EmailField) - CHARINDEX('@', REVERSE(EmailField)) + 1
ข้อมูลมากกว่านี้: