sql >> Databáze >  >> RDS >> Sqlserver

sql server 2008:vyberte podřetězec z pole

Rozdělte to na 2 kroky:

  1. zahoďte vše až do začátku čísla (zde jsem předpokládal minimálně 3 digisty)
  2. pak vezměte vše až po další nenumerickou číslici

Budete potřebovat CASE pro LEFT je číslo na konci, protože PATINDEX vrátí nulu

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. Spuštění úlohy SQL Server Agent z uložené procedury a vrácení výsledku úlohy

  2. Stránkování v Laravel 4 funguje na jednu stránku. ale nepracuje pro jiného

  3. Proč je protokolování chyb dml ignorováno v paralelním příkazu

  4. @BatchSize chytré nebo hloupé použití?