Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

จะลบอักขระที่ไม่ใช่ตัวอักษรและตัวเลขทั้งหมดออกจากสตริงใน MySQL ได้อย่างไร


อักขระที่ไม่ใช่ตัวอักษรและตัวเลขมีดังนี้ -

@,!,#,&,(),?, /

ไม่มีฟังก์ชัน inbuilt เพื่อลบอักขระที่ไม่ใช่ตัวอักษรและตัวเลขออกจากสตริงใน MySQL ดังนั้นเราจึงสร้างฟังก์ชันที่จะลบอักขระที่ไม่ใช่ตัวเลขและตัวอักษรทั้งหมด การประกาศและคำจำกัดความของฟังก์ชันมีดังนี้

mysql> delimiter //mysql> CREATE FUNCTION RemoveNonAlphaNumeric( s CHAR(255) ) คืนค่า CHAR(255) DETERMINISTIC -> BEGIN -> DECLARE var1 ความยาว SMALLINT DEFAULT 1; -> ประกาศผลลัพธ์ CHAR (255) ค่าเริ่มต้น ''; -> ประกาศ CHAR(1); -> ความยาวชุด =CHAR_LENGTH( s ); -> ทำซ้ำ -> เริ่มต้น -> SET ch =MID( s, var1, 1 ); -> IF ch REGEXP '[[:alnum:]]' แล้ว -> SET ผล =CONCAT(ผลลัพธ์ ,ch); -> สิ้นสุดถ้า; -> SET var1 =var1 + 1; -> สิ้นสุด; -> จนกว่า var1>ความยาวสิ้นสุดซ้ำ; -> ผลตอบแทนผล; -> END //แบบสอบถามตกลง 0 แถวได้รับผลกระทบ (0.10 วินาที)

ฟังก์ชันชื่อ 'RemoveNonAlphaNumeric' จะลบอักขระที่ไม่ใช่ตัวอักษรและตัวเลขทั้งหมดออกจากสตริง ในการตรวจสอบ เราจะเรียกฟังก์ชันที่ผู้ใช้กำหนด

mysql>delimiter;mysql> เลือก 'My Email id is test@123!',RemoveNonAlphaNumeric('My Email id is test@123!');

ต่อไปนี้เป็นผลลัพธ์ที่แสดงการลบอักขระที่เป็นตัวอักษรและตัวเลขคละกันได้สำเร็จโดยใช้ฟังก์ชัน “RemoveNonAlphaNumeric”

<ก่อนหน้า>+--------------------------+------------------- --------------------+| รหัสอีเมลของฉันคือ test@123! | removeNonAlphaNumeric('รหัสอีเมลของฉันคือ test@123!') |+--------------------------+ -------- --------------------------------------------------+| รหัสอีเมลของฉันคือ test@123! | MyEmailidtest123 |+--------------------------+-------------------------- ------------------------------- +1 แถวในชุด (0.15 วินาที)

ในสตริงนี้ (MyEmailidistest123 ) ไม่มี @ และ ! สัญลักษณ์ตอนนี้ ซึ่งหมายความว่าฟังก์ชันทำงานอย่างถูกต้อง