การ Masking ตัวเลข: แสดงหลักแรก ต่อด้วย 0 ทุกหลักที่เหลือ
ใช้ LEFT() ดึงตัวแรก + REPEAT('0', LENGTH-1) สร้างศูนย์ตามจำนวนหลักที่เหลือ แล้ว CONCAT() รวมกัน
Syntax
SELECT CONCAT(LEFT(number_col, 1), REPEAT('0', CHAR_LENGTH(number_col) - 1)) AS masked FROM table_name;
ตัวอย่างการใช้งาน
สร้างตารางและเพิ่มหมายเลขยาวต่างกัน:
mysql> CREATE TABLE DemoTable744 (Number VARCHAR(100));
Query OK, 0 rows affected (0.47 sec)
mysql> INSERT INTO DemoTable744 VALUES
('537737736252'), ('989000099999'), ('343225666666664533'), ('4322111899494');
Query OK, 4 rows affected
ข้อมูลต้นฉบับ:
mysql> SELECT * FROM DemoTable744;
+--------------------+ | Number | +--------------------+ | 537737736252 | | 989000099999 | | 343225666666664533 | | 4322111899494 | +--------------------+ 4 rows in set (0.00 sec)
แทนที่ทุกหลักเป็น 0 ยกเว้นหลักแรก:
mysql> SELECT CONCAT(LEFT(Number, 1), REPEAT('0', CHAR_LENGTH(Number) - 1)) AS AfterAddingZero FROM DemoTable744;
+--------------------+ | AfterAddingZero | +--------------------+ | 500000000000 | | 900000000000 | | 300000000000000000 | | 4000000000000 | +--------------------+ 4 rows in set (0.06 sec)
ฟังก์ชันที่ใช้
| ฟังก์ชัน | หน้าที่ |
|---|---|
| LEFT(str, n) | ดึง n ตัวอักษรจากซ้าย |
| CHAR_LENGTH(str) | นับจำนวนตัวอักษร (Characters) |
| REPEAT(str, count) | ทำซ้ำ String count ครั้ง |
| CONCAT(str1, str2, ...) | รวม String |