Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

sql server 2008:wybierz podciąg z pola

Podziel to na 2 kroki:

  1. odrzuć wszystko do początku numeru (tu założyłem minimum 3 digitistów)
  2. następnie weź wszystko do następnej nienumerycznej cyfry

Będziesz potrzebować CASE dla LEWEJ to liczba jest na końcu, ponieważ PATINDEX zwróci zero

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. Wewnętrzne elementy SQL Server:operatorzy problematyczni Pt. III – Rodzaje

  2. procedury składowane z sqlAlchemy

  3. Używanie podzapytań w SQL do znalezienia max(count())

  4. Czy możesz wywołać usługę internetową z kodu TSQL?

  5. Czy ograniczenie Check może odnosić się do innej tabeli?