sql >> Database teknologi >  >> RDS >> Sqlserver

sql server 2008:vælg understreng fra et felt

Opdel det i 2 trin:

  1. kasser alt indtil starten af ​​nummeret (her antog jeg minimum 3 cifre)
  2. Tag derefter alt op til det næste ikke-numeriske ciffer

Du skal bruge et CASE for VENSTRE er tallet i slutningen, fordi PATINDEX returnerer nul

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. Forespørgsel efter PHP/MySql OG/ELLER for en avanceret søgning

  2. CONVERT_TZ – Sådan ændres MySQL-tidszone i forespørgsel

  3. Hvordan kan PL/SQL grammatikken inkluderet i ANTLR4 testes?

  4. sql generere unikt tabel/visningsnavn