sql >> Database teknologi >  >> RDS >> Mysql

MySQL-outputmaskering (dvs. telefonnummer, SSN osv. skærmformatering)

Her er, hvad jeg kom frem til, hvis du har ændringer eller forbedringer, så læg dem som kommentarer, og jeg vil opdatere koden. Ellers, hvis du kan lide det, skal du ikke komme til at støde det. God fornøjelse!

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 ;

Sådan bruger du det... Det virker kun for heltal (dvs. SSN Ph# osv.)

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. Hvordan binder man parametre til en rå DB-forespørgsel i Laravel, der bruges på en model?

  2. SQL Server, hvordan indstilles automatisk stigning efter oprettelse af en tabel uden tab af data?

  3. 2 måder at konvertere til store bogstaver i Oracle

  4. SQL erstatter alle NULL'er