sql >> Database >  >> RDS >> Sqlserver

sql server 2008:selecteer subtekenreeks uit een veld

Splits het op in 2 stappen:

  1. gooi alles weg tot aan het begin van het nummer (hier ging ik uit van minimaal 3 cijfers)
  2. vervolg dan alles tot het volgende niet-numerieke cijfer

Je hebt een CASE nodig voor de LEFT als het nummer aan het einde staat, omdat PATINDEX nul retourneert

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. Codeigniter laat me de invoer niet bijwerken, omdat sommige velden uniek moeten zijn

  2. Hoe niet-bewerkbare/gegenereerde code in netbeans te veranderen

  3. FreeText COUNT-query op meerdere tabellen is super traag

  4. Waarom is het resultaat van `select 'a'=0;` 1?