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

sql server 2008:chọn chuỗi con từ một trường

Hãy chia nhỏ thành 2 bước:

  1. loại bỏ mọi thứ cho đến đầu số (ở đây tôi giả định rằng tối thiểu 3 số kỹ thuật số)
  2. sau đó đưa mọi thứ lên đến chữ số không phải số tiếp theo

Bạn sẽ cần một CASE cho LEFT là số ở cuối vì PATINDEX sẽ trả về 0

DECLARE @MyTable TABLE (bigstring varchar(200))
INSERT @MyTable VALUES ('F:\MassHunter\DATA\6897_Pan_1\QuantResults\6897_Pan_1.batch.bin')
INSERT @MyTable VALUES ('F:\MassHunter\DATA\6897_Pan_1\QuantResults\6897_Pan_1.batch.bin')
INSERT @MyTable VALUES ('10914_Excel Short Summary.xls')

SELECT  --assumes number not at end of string
    LEFT(startOf, PATINDEX('%[^0-9]%', startof)-1)
FROM
    (
    SELECT  --assumed 3 digits minimum
        SUBSTRING(bigstring, PATINDEX('%[0-9][0-9][0-9]%', bigstring), 8000) AS startOf
    FROM
        @MyTable
    ) foo



  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 kết quả của một cột thành một hàng

  2. Làm thế nào để chèn vào một bảng chỉ với một cột IDENTITY?

  3. Ứng dụng khách có địa chỉ IP không được phép truy cập vào cơ sở dữ liệu Azure SQL của máy chủ

  4. Thay đổi loại dữ liệu của cột thành mã định danh duy nhất từ ​​bigint

  5. Đặt tùy chọn 9 trong thủ tục được lưu trữ trên SQL Server bằng WinHttp.WinHttpRequest.5.1 cho TLS 1.2