Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Penyamaran keluaran MySQL (yaitu nomor telepon, SSN, dll. pemformatan tampilan)

Inilah yang saya buat, jika Anda memiliki modifikasi atau peningkatan, silakan tinggalkan sebagai komentar dan saya akan memperbarui kodenya. Kalau tidak, jika Anda suka, jangan sampai menabraknya. Selamat menikmati!

DELIMITER //

CREATE FUNCTION mask (unformatted_value BIGINT, format_string CHAR(32))
RETURNS CHAR(32) DETERMINISTIC

BEGIN
# Declare variables
DECLARE input_len TINYINT;
DECLARE output_len TINYINT;
DECLARE temp_char CHAR;

# Initialize variables
SET input_len = LENGTH(unformatted_value);
SET output_len = LENGTH(format_string);

# Construct formated string
WHILE ( output_len > 0 ) DO

SET temp_char = SUBSTR(format_string, output_len, 1);
IF ( temp_char = '#' ) THEN
IF ( input_len > 0 ) THEN
SET format_string = INSERT(format_string, output_len, 1, SUBSTR(unformatted_value, input_len, 1));
SET input_len = input_len - 1;
ELSE
SET format_string = INSERT(format_string, output_len, 1, '0');
END IF;
END IF;

SET output_len = output_len - 1;
END WHILE;

RETURN format_string;
END //

DELIMITER ;

Berikut cara menggunakannya... Ini hanya berfungsi untuk bilangan bulat (yaitu SSN Ph# dll.)

mysql> select mask(123456789,'###-##-####');
+-------------------------------+
| mask(123456789,'###-##-####') |
+-------------------------------+
| 123-45-6789                   |
+-------------------------------+
1 row in set (0.00 sec)

mysql> select mask(123456789,'(###) ###-####');
+----------------------------------+
| mask(123456789,'(###) ###-####') |
+----------------------------------+
| (012) 345-6789                   |
+----------------------------------+
1 row in set (0.00 sec)

mysql> select mask(123456789,'###-#!##@(###)');
+----------------------------------+
| mask(123456789,'###-#!##@(###)') |
+----------------------------------+
| [email protected](789)                   |
+----------------------------------+
1 row in set (0.00 sec)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL menghitung semua baris alih-alih menghitung baris individual

  2. Tetapkan opsi default di dropdown php dan pertahankan saat mengirimkan kueri

  3. SQL memperbarui satu kolom dari kolom lain di tabel lain

  4. MYSQL mendapatkan semua hasil tetapi pertama

  5. Apa yang lebih cepat, SELECT DISTINCT atau GROUP BY di MySQL?