ฟังก์ชัน IndexOf ใน T-SQL


168

เมื่อระบุคอลัมน์ที่อยู่อีเมลฉันจำเป็นต้องค้นหาตำแหน่งของเครื่องหมาย @ สำหรับการสตริงย่อย

อะไรคือสิ่งที่indexofฟังก์ชั่นสำหรับสตริงใน T-SQL?

ค้นหาสิ่งที่ส่งคืนตำแหน่งของสตริงย่อยภายในสตริง

ใน C #

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

คำตอบ:



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

11

CHARINDEXผมเชื่อว่าคุณต้องการที่จะใช้ คุณสามารถอ่านเกี่ยวกับเรื่องนี้ที่นี่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.