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

Làm cách nào để chỉ nhận các chữ số từ Chuỗi trong mysql?

Nếu chuỗi bắt đầu bằng một số, sau đó chứa các ký tự không phải số, bạn có thể sử dụng CAST() hoặc chuyển đổi nó thành số một cách hoàn toàn bằng cách thêm 0 :

SELECT CAST('1234abc' AS UNSIGNED); -- 1234
SELECT '1234abc'+0; -- 1234

Để trích xuất các số từ một tùy ý chuỗi bạn có thể thêm hàm tùy chỉnh như điều này :

DELIMITER $$

CREATE FUNCTION `ExtractNumber`(in_string VARCHAR(50)) 
RETURNS INT
NO SQL
BEGIN
    DECLARE ctrNumber VARCHAR(50);
    DECLARE finNumber VARCHAR(50) DEFAULT '';
    DECLARE sChar VARCHAR(1);
    DECLARE inti INTEGER DEFAULT 1;

    IF LENGTH(in_string) > 0 THEN
        WHILE(inti <= LENGTH(in_string)) DO
            SET sChar = SUBSTRING(in_string, inti, 1);
            SET ctrNumber = FIND_IN_SET(sChar, '0,1,2,3,4,5,6,7,8,9'); 
            IF ctrNumber > 0 THEN
                SET finNumber = CONCAT(finNumber, sChar);
            END IF;
            SET inti = inti + 1;
        END WHILE;
        RETURN CAST(finNumber AS UNSIGNED);
    ELSE
        RETURN 0;
    END IF;    
END$$

DELIMITER ;

Khi hàm được xác định, bạn có thể sử dụng nó trong truy vấn của mình:

SELECT ExtractNumber("abc1234def") AS number; -- 1234


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chuyển đổi ngày giờ JS thành ngày giờ MySQL

  2. Khi nào sử dụng MyISAM và InnoDB?

  3. MySQL - Ràng buộc khóa ngoại có điều kiện

  4. node.js + tổng hợp kết nối mysql

  5. Mẹo hữu ích để khắc phục sự cố thường gặp trong MySQL