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

Cách trích xuất số từ một chuỗi bằng TSQL

Có vẻ như bạn đã có một giải pháp đáp ứng nhu cầu của mình nhưng tôi có một mẹo nhỏ mà tôi sử dụng để trích xuất các số từ các chuỗi mà tôi nghĩ có thể có lợi cho ai đó. Nó tận dụng lợi thế của câu lệnh FOR XML và tránh các vòng lặp rõ ràng. Nó tạo nên một hàm bảng nội tuyến tốt hoặc một hàm vô hướng đơn giản. Làm với nó những gì bạn sẽ làm :)

DECLARE @String varchar(255) = 'This1 Is2 my3 Test4 For Number5 [email protected]';


SELECT
    CAST(( 
        SELECT CASE --// skips alpha. make sure comparison is done on upper case
            WHEN ( ASCII(UPPER(SUBSTRING(@String, Number, 1))) BETWEEN 48 AND 57 )
            THEN SUBSTRING(@String, Number, 1)
            ELSE ''END
        FROM
        ( 
            SELECT TOP 255 --// east way to get a list of numbers
                                           --// change value as needed.
                ROW_NUMBER() OVER ( ORDER BY ( SELECT 1 ) ) AS Number
             FROM master.sys.all_columns a
                CROSS JOIN master.sys.all_columns b 
        ) AS n
        WHERE Number <= LEN(@String)
        --// use xml path to pivot the results to a row
        FOR XML PATH('') ) AS varchar(255)) AS Result

Kết quả ==> 1234510



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sử dụng tập hợp kết quả từ một CHỌN phụ khi gặp hàng trùng lặp

  2. Bắt chước group_concat () kết hợp với GROUP BY

  3. Giám sát cơ sở dữ liệu và phiên bản thông qua Activity Monitor | Khắc phục sự cố hiệu suất máy chủ SQL -2

  4. THAM GIA TRÁI so với LEFT OUTER THAM GIA trong SQL Server

  5. Có thể truyền một tham số để kích hoạt trong cơ sở dữ liệu SQL Server không?