Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Che dấu đầu ra MySQL (tức là số điện thoại, SSN, v.v. định dạng hiển thị)

Đây là những gì tôi nghĩ ra, nếu bạn có bất kỳ sửa đổi hoặc cải tiến nào, vui lòng để lại chúng dưới dạng nhận xét và tôi sẽ cập nhật mã. Ngược lại, nếu bạn thích nó, đừng để va chạm với nó. Hãy tận hưởng!

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 ;

Đây là cách sử dụng nó ... Nó chỉ hoạt động với số nguyên (tức là SSN Ph #, v.v.)

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. Điều gì tốt hơn trong MYSQL count (*) hoặc count (1)?

  2. Mysql / Php - Ngày và giờ hiện tại

  3. MySQL so với PDO

  4. Một kết nối cơ sở dữ liệu có nên luôn mở hay chỉ được mở khi cần thiết?

  5. (2006, 'Máy chủ MySQL đã biến mất') trong WSGI django