Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

sql сървър 2008:изберете подниз от поле

Разделете го на 2 стъпки:

  1. изхвърлете всичко до началото на номера (тук предположих минимум 3 цифри)
  2. след това вземете всичко до следващата нечислова цифра

Ще ви трябва CASE за ЛЯВО, ако числото е в края, защото PATINDEX ще върне нула

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. SQL Server - Запитване на системни обекти

  2. SQL:Харесва срещу Съдържа - Различни резултати

  3. хеширане на SQL ред?

  4. Вземете правилната част от низ в SQL Server (T-SQL)

  5. Изисква се заявка за преброяване