Hướng dẫn mysql remove non alphanumeric characters - mysql xóa các ký tự không phải chữ và số

Giải pháp thẳng và battleted cho các ký tự Latin và Cyrillic:

DELIMITER //

CREATE FUNCTION `remove_non_numeric_and_letters`[input TEXT]
  RETURNS TEXT
  BEGIN
    DECLARE output TEXT DEFAULT '';
    DECLARE iterator INT DEFAULT 1;
    WHILE iterator < [LENGTH[input] + 1] DO
      IF SUBSTRING[input, iterator, 1] IN
         ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ж', 'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р', 'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ', 'Ы', 'Ь', 'Э', 'Ю', 'Я', 'а', 'б', 'в', 'г', 'д', 'е', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я']
      THEN
        SET output = CONCAT[output, SUBSTRING[input, iterator, 1]];
      END IF;
      SET iterator = iterator + 1;
    END WHILE;
    RETURN output;
  END //

DELIMITER ;

Usage:

-- outputs "hello12356"
SELECT remove_non_numeric_and_letters['hello - 12356-привет ""]']

Các ký tự không phải là người trong số như sau-

@,!,#,&,[],?, /

Không có chức năng sẵn có để loại bỏ các ký tự không phải là một chuỗi trong chuỗi trong MySQL. Do đó, chúng tôi tạo ra một chức năng loại bỏ tất cả các ký tự không phải là ký sinh viên. Tuyên bố và định nghĩa chức năng như sau.

mysql> delimiter //
mysql> CREATE FUNCTION RemoveNonAlphaNumeric[ s CHAR[255] ] RETURNS CHAR[255] DETERMINISTIC
   -> BEGIN
   ->   DECLARE var1, length SMALLINT DEFAULT 1;
   ->   DECLARE result CHAR[255] DEFAULT '';
   ->   DECLARE ch CHAR[1];
   ->   SET length  = CHAR_LENGTH[ s ];
   ->   REPEAT
   ->     BEGIN
   ->       SET ch = MID[ s, var1, 1 ];
   ->       IF ch REGEXP '[[:alnum:]]' THEN
   ->         SET result =CONCAT[result ,ch];
   ->       END IF;
   ->       SET var1 = var1 + 1;
   ->     END;
   ->   UNTIL var1 >length  END REPEAT;
   ->   RETURN result ;
   -> END //
Query OK, 0 rows affected [0.10 sec]

Hàm có tên ‘RemoveNonalPhanumeric, loại bỏ tất cả các ký tự không phải là ký tự vô sinh khỏi một chuỗi. Để kiểm tra, bây giờ chúng tôi sẽ gọi chức năng do người dùng xác định.

mysql>delimiter ;
mysql>  select 'My Email id is test@123!',RemoveNonAlphaNumeric['My Email id is test@123!'];

Sau đây là đầu ra hiển thị việc loại bỏ thành công các ký tự chữ và số bằng cách sử dụng chức năng của RemoveNononalphanumeric.

+--------------------------+---------------------------------------------------+
| My Email id is test@123! | removeNonAlphaNumeric['My Email id is test@123!'] |
+--------------------------+---------------------------------------------------+
| My Email id is test@123! | MyEmailidistest123                                |
+--------------------------+---------------------------------------------------+
1 row in set [0.15 sec]

Trong chuỗi này [myemailidistest123], không có @ và! Biểu tượng bây giờ, có nghĩa là chức năng đang hoạt động chính xác.

Cập nhật vào ngày 30 tháng 3 năm 2019 22:30:23

  • Câu hỏi và câu trả lời liên quan
  • Chương trình PHP để loại bỏ các ký tự không phải là vô hiệu khỏi chuỗi
  • Làm thế nào để loại bỏ các ký tự không phải là đa số trong PHP Stirng?
  • JavaScript xóa các ký tự không trùng lặp khỏi chuỗi
  • Xóa tất cả các ký tự phi alphabetical của một chuỗi trong Java?
  • Loại bỏ tất cả các ký tự không alphabetic khỏi một chuỗi trong JavaScript
  • Cách xóa các ký tự không phải ASCII khỏi chuỗi
  • Làm thế nào để xóa các ký tự khỏi một chuỗi trong Arduino?
  • Xóa tất cả các ký tự của chuỗi thứ nhất khỏi JavaScript thứ hai
  • Làm thế nào để loại bỏ tất cả các ký tự đặc biệt, dấu câu và không gian từ một chuỗi trong Python?
  • Truy vấn MySQL để xóa tất cả các ký tự sau dấu phẩy cuối cùng trong chuỗi?
  • Làm thế nào để loại bỏ các ký tự cụ thể khỏi một chuỗi trong Python?
  • Làm thế nào để xóa một số ký tự nhất định khỏi chuỗi trong C ++?
  • Viết một biểu thức thông thường để xóa tất cả các ký tự đặc biệt khỏi chuỗi JavaScript?
  • Làm thế nào để xóa các ký tự không từ trong JavaScript?
  • Làm thế nào để cắt giảm các ký tự không thể in từ một chuỗi trong Python?

Dưới đây là hai tùy chọn để tìm các hàng chỉ chứa các ký tự không phải là số đồng âm trong MySQL.

Các ký tự không phải là đồng số bao gồm các ký tự dấu câu như

-- outputs "hello12356"
SELECT remove_non_numeric_and_letters['hello - 12356-привет ""]']
8 và các ký hiệu như
-- outputs "hello12356"
SELECT remove_non_numeric_and_letters['hello - 12356-привет ""]']
9, cũng như các ký tự khoảng trắng như các ký tự không gian hoặc tab.

Dữ liệu mẫu

Chúng tôi sẽ sử dụng các dữ liệu sau đây cho các ví dụ của chúng tôi:

CREATE TABLE t1 [
    c1 varchar[255] NULL
    ];

INSERT INTO t1 VALUES
    ['Music'],
    ['Live Music'],
    ['Café'],
    ['Café Del Mar'],
    ['100 Cafés'],
    ['[email protected]'],
    ['1 + 1'],
    ['[]'],
    ['[email protected]#&[]–[{}]:;'',?/*'],
    ['`~$^+=“'],
    ['$1.50'],
    ['Player 456'],
    ['007'],
    [null],
    [''],
    ['é'],
    ['É'],
    ['é 123'],
    ['ø'],
    ['ø 123'];
SELECT c1 FROM t1;

Result:

+----------------------+
| c1                   |
+----------------------+
| Music                |
| Live Music           |
| Café                 |
| Café Del Mar         |
| 100 Cafés            |
| [email protected]    |
| 1 + 1                |
| []                   |
| [email protected]#&[]–[{}]:;',?/*   |
| `~$^+=“            |
| $1.50                |
| Player 456           |
| 007                  |
| NULL                 |
|                      |
| é                    |
| É                    |
| é 123                |
| ø                    |
| ø 123                |
+----------------------+

Tùy chọn 1: So sánh với
@,!,#,&,[],?, /
0

Chúng tôi có thể sử dụng toán tử MySQL từ

@,!,#,&,[],?, /
1 để so sánh cột của chúng tôi với một biểu thức thông thường.

Khả năng biểu thức chính quy của MySQL, bao gồm hỗ trợ cho các lớp ký tự POSIX. Do đó, chúng ta có thể sử dụng lớp ký tự

@,!,#,&,[],?, /
0 POSIX trong các biểu thức thông thường của chúng ta để tìm các hàng chỉ chứa ký tự chữ và số, sau đó phủ nhận điều đó với toán tử
@,!,#,&,[],?, /
3.

SELECT c1 FROM t1 
WHERE c1 NOT REGEXP '[[:alnum:]]';

Result:

+----------------------+
| c1                   |
+----------------------+
| []                   |
| [email protected]#&[]–[{}]:;',?/*   |
| `~$^+=“            |
|                      |
+----------------------+

Nếu bạn cần loại trừ một ký tự cụ thể, bạn luôn có thể sử dụng hàm

@,!,#,&,[],?, /
4.

Ví dụ: hãy để loại trừ chuỗi trống khỏi hàng cuối cùng:

-- outputs "hello12356"
SELECT remove_non_numeric_and_letters['hello - 12356-привет ""]']
0

Kết quả:

-- outputs "hello12356"
SELECT remove_non_numeric_and_letters['hello - 12356-привет ""]']
1

Tùy chọn 2: Chỉ định một loạt các ký tự

Một cách khác để làm điều đó là chỉ định một loạt các ký tự trong biểu thức thông thường của bạn.

Example:

-- outputs "hello12356"
SELECT remove_non_numeric_and_letters['hello - 12356-привет ""]']
2

Result:

-- outputs "hello12356"
SELECT remove_non_numeric_and_letters['hello - 12356-привет ""]']
3

Và để xóa chuỗi trống:

-- outputs "hello12356"
SELECT remove_non_numeric_and_letters['hello - 12356-привет ""]']
4

Result:

-- outputs "hello12356"
SELECT remove_non_numeric_and_letters['hello - 12356-привет ""]']
5

Trong trường hợp này, phạm vi loại trừ của tôi đã không bao gồm các ký tự chữ và số như

@,!,#,&,[],?, /
5,
@,!,#,&,[],?, /
6 và
@,!,#,&,[],?, /
7, và do đó, đầu ra không phải là một đại diện thực sự của các ký tự không phải là tổng số. Điều đó nói rằng, ít nhất phương pháp này cung cấp cho bạn tùy chọn để chỉ định các ký tự chính xác mà bạn muốn bao gồm hoặc loại trừ khỏi kết quả.

Giải pháp thay thế cho
@,!,#,&,[],?, /
1

Trong MySQL, các toán tử

@,!,#,&,[],?, /
9 và
mysql> delimiter //
mysql> CREATE FUNCTION RemoveNonAlphaNumeric[ s CHAR[255] ] RETURNS CHAR[255] DETERMINISTIC
   -> BEGIN
   ->   DECLARE var1, length SMALLINT DEFAULT 1;
   ->   DECLARE result CHAR[255] DEFAULT '';
   ->   DECLARE ch CHAR[1];
   ->   SET length  = CHAR_LENGTH[ s ];
   ->   REPEAT
   ->     BEGIN
   ->       SET ch = MID[ s, var1, 1 ];
   ->       IF ch REGEXP '[[:alnum:]]' THEN
   ->         SET result =CONCAT[result ,ch];
   ->       END IF;
   ->       SET var1 = var1 + 1;
   ->     END;
   ->   UNTIL var1 >length  END REPEAT;
   ->   RETURN result ;
   -> END //
Query OK, 0 rows affected [0.10 sec]
0 là từ đồng nghĩa với
mysql> delimiter //
mysql> CREATE FUNCTION RemoveNonAlphaNumeric[ s CHAR[255] ] RETURNS CHAR[255] DETERMINISTIC
   -> BEGIN
   ->   DECLARE var1, length SMALLINT DEFAULT 1;
   ->   DECLARE result CHAR[255] DEFAULT '';
   ->   DECLARE ch CHAR[1];
   ->   SET length  = CHAR_LENGTH[ s ];
   ->   REPEAT
   ->     BEGIN
   ->       SET ch = MID[ s, var1, 1 ];
   ->       IF ch REGEXP '[[:alnum:]]' THEN
   ->         SET result =CONCAT[result ,ch];
   ->       END IF;
   ->       SET var1 = var1 + 1;
   ->     END;
   ->   UNTIL var1 >length  END REPEAT;
   ->   RETURN result ;
   -> END //
Query OK, 0 rows affected [0.10 sec]
1.Do đó, chúng tôi có thể thay thế bất kỳ ví dụ nào trước đây bằng
mysql> delimiter //
mysql> CREATE FUNCTION RemoveNonAlphaNumeric[ s CHAR[255] ] RETURNS CHAR[255] DETERMINISTIC
   -> BEGIN
   ->   DECLARE var1, length SMALLINT DEFAULT 1;
   ->   DECLARE result CHAR[255] DEFAULT '';
   ->   DECLARE ch CHAR[1];
   ->   SET length  = CHAR_LENGTH[ s ];
   ->   REPEAT
   ->     BEGIN
   ->       SET ch = MID[ s, var1, 1 ];
   ->       IF ch REGEXP '[[:alnum:]]' THEN
   ->         SET result =CONCAT[result ,ch];
   ->       END IF;
   ->       SET var1 = var1 + 1;
   ->     END;
   ->   UNTIL var1 >length  END REPEAT;
   ->   RETURN result ;
   -> END //
Query OK, 0 rows affected [0.10 sec]
2 hoặc
mysql> delimiter //
mysql> CREATE FUNCTION RemoveNonAlphaNumeric[ s CHAR[255] ] RETURNS CHAR[255] DETERMINISTIC
   -> BEGIN
   ->   DECLARE var1, length SMALLINT DEFAULT 1;
   ->   DECLARE result CHAR[255] DEFAULT '';
   ->   DECLARE ch CHAR[1];
   ->   SET length  = CHAR_LENGTH[ s ];
   ->   REPEAT
   ->     BEGIN
   ->       SET ch = MID[ s, var1, 1 ];
   ->       IF ch REGEXP '[[:alnum:]]' THEN
   ->         SET result =CONCAT[result ,ch];
   ->       END IF;
   ->       SET var1 = var1 + 1;
   ->     END;
   ->   UNTIL var1 >length  END REPEAT;
   ->   RETURN result ;
   -> END //
Query OK, 0 rows affected [0.10 sec]
3.

Ví dụ về

@,!,#,&,[],?, /
9:

-- outputs "hello12356"
SELECT remove_non_numeric_and_letters['hello - 12356-привет ""]']
6

Ví dụ về

mysql> delimiter //
mysql> CREATE FUNCTION RemoveNonAlphaNumeric[ s CHAR[255] ] RETURNS CHAR[255] DETERMINISTIC
   -> BEGIN
   ->   DECLARE var1, length SMALLINT DEFAULT 1;
   ->   DECLARE result CHAR[255] DEFAULT '';
   ->   DECLARE ch CHAR[1];
   ->   SET length  = CHAR_LENGTH[ s ];
   ->   REPEAT
   ->     BEGIN
   ->       SET ch = MID[ s, var1, 1 ];
   ->       IF ch REGEXP '[[:alnum:]]' THEN
   ->         SET result =CONCAT[result ,ch];
   ->       END IF;
   ->       SET var1 = var1 + 1;
   ->     END;
   ->   UNTIL var1 >length  END REPEAT;
   ->   RETURN result ;
   -> END //
Query OK, 0 rows affected [0.10 sec]
1:

-- outputs "hello12356"
SELECT remove_non_numeric_and_letters['hello - 12356-привет ""]']
7

Làm thế nào để bạn loại bỏ các ký tự không phải là chữ và số?

Để loại bỏ tất cả các ký tự không phải là một chuỗi không phải là một chuỗi, hãy gọi phương thức thay thế [], chuyển nó một biểu thức thông thường phù hợp với tất cả các ký tự không phải là ký tự vô số là tham số đầu tiên và một chuỗi trống là thứ hai.Phương thức thay thế trả về một chuỗi mới với tất cả các trận đấu được thay thế.Đã sao chép!call the replace[] method, passing it a regular expression that matches all non-alphanumeric characters as the first parameter and an empty string as the second. The replace method returns a new string with all matches replaced. Copied!

Làm thế nào loại bỏ các ký tự đặc biệt khỏi một chuỗi trong truy vấn chọn mysql?

Bạn có thể xóa các ký tự đặc biệt khỏi trường cơ sở dữ liệu bằng hàm thay thế [].using REPLACE[] function.

Làm thế nào loại bỏ tất cả các ký tự đặc biệt khỏi chuỗi trong SQL Server?

Xóa nhiều ký tự đặc biệt..
Trả về Varchar [250].
Khai báo @strvalue varchar [250] = '%[^0-9a-z]%'.
Trong khi Patindex [@Strvalue,@String]> 0 ..

Bài Viết Liên Quan

Chủ Đề