ถ้าวันนึงเกิดจำเป็นจริง ๆ ต้องจัดรูปแบบการแสดงผลข้อมูลในฐานข้อมูลขึ้นมาเช่น หมายเลขโทรศัพท์ เลขประจำตัวประชาชน หรือจัดรูปแบบตัวเลขในแบบอื่น ๆ โดยปกติแล้ว MySQL มีฟังก์ชั่นที่เกี่ยวข้องกับรูปแบบการแสดงผลอยู่ไม่กี่ตัว เช่นพวกตัวเลข(เงิน) วันที่ ซึ่งก็มีแค่นั้นแหล่ะ ^_^
** ส่วนตัวแล้วไม่แนะนำให้ใช้ (แล้วเขียนขึ้นมาทำไมฟระ 5555) คือถ้าจะใช้ก็มีให้ใช้ได้แต่ไม่แนะนำไง เป็นภาระการประมวลผลโดยใช่เหตุ ปล่อยให้เป็นหน้าที่ของฟรอนท์ไปหล่ะกัน
DELIMITER $$ DROP FUNCTION IF EXISTS SIMPLEMASK$$ CREATE FUNCTION SIMPLEMASK ( xvalue VARCHAR(32), xformat VARCHAR(32) ) RETURNS CHAR(32) DETERMINISTIC BEGIN DECLARE input_len TINYINT; DECLARE tc CHAR; DECLARE idx TINYINT; DECLARE yformat VARCHAR(32); DECLARE posinsert TINYINT; DECLARE newstring VARCHAR(32); # Initialize variables SET yformat = REPLACE(xformat, '#', ''); SET input_len = LENGTH(yformat); SET idx = 1; SET posinsert = 0; # Construct formated string WHILE ( idx <= input_len ) DO SET tc = SUBSTR(yformat, idx, 1); SET posinsert = LOCATE(tc, xformat, (idx + posinsert)); SET newstring = CONCAT(tc, SUBSTR(xvalue, posinsert, 1)); SET xvalue = INSERT(xvalue, posinsert, 1, newstring); SET idx = idx + 1; END WHILE; RETURN xvalue; END $$ DELIMITER ; -- Test SELECT SIMPLEMASK(1234567890123,'#-####-#####-##-#'); -- CID/1-2345-67890-12-3
ป.ล.
- ดูเรื่อง MaskTextBox ต่อ
- เราออปติไมซ์จากเวอร์ชั่นใน Stackoverflow