2014-10-10 5 views
-1

Как отрезать подстроку между двумя известными последовательностями символов в SQL Server?Как вырезать подстроку между известными символами в SQL Server

Например: Это моя строка (столбец в таблице)

«DateTimeFormat = дд.мм.гггг & ReportDate_FromDate = 08/11/2014 00:00:00 & ReportDate_ToDate = 08/12/2014 23:59:00 & Reports_Brand: IsNull = истинная & Reports_Portal: IsNull = истинная & Reports_Currency: IsNull = истинная & ReportBy = & Неделя OrderBy: IsNull = истинная & IncludeDataForLastHour: IsNull = истинная & ИмяСервера: IsNull = истина & пользователя = pirman1 & Reports_Export = False & Internal»

, и я хочу видеть только pirman1, который находится между &User= и следующим &.

+0

Сделайте это в своем переднем конце .... –

+0

что вы подразумеваете под «вашим передним концом»? – John

+0

В вашем приложении - C#, VB.NET, PHP, Ruby - все, что вы используете. Это не очень хорошая работа для T-SQL (которая довольно слаба, когда дело доходит до манипуляции с строкой) .... –

ответ

0

Я тестировал этот код с небольшим изменением в коде Mureinik, это один работает отлично.

SELECT REPLACE(REPLACE(SUBSTRING(string, start_pos, end_pos - start_pos 
    +1), '&User=', ''), '&', '') 

    FROM (SELECT string, 
      CHARINDEX('&User=', string) AS start_pos, 
      CHARINDEX('&', string, CHARINDEX('&User=', string)+1) AS end_pos 
      FROM dbo.TestTbl 
    ) AS abc 
0

Сочетание substring и charindex должны сделать трюк:

SELECT SUBSTR(str_col, start_pos, end_pos - start_pos + 1) 
FROM (SELECT str_col, 
       CHARINDEX('&User=', str_col) AS start_pos, 
       CHARINDEX('&', str_col, CHARINDEX('&User=', str_col) + 1) AS end_pos 
     FROM my_table) t 
+0

Это дает мне и User = pirman1. Как вырезать & User = SELECT SUBSTRING ([Параметры], start_pos, end_pos - start_pos) FROM (SELECT [Параметры], CHARINDEX ('& User =', [Parameters]) AS start_pos, CHARINDEX ('&', [Параметры ], CHARINDEX ('& User =', [Parameters]) + 1) AS end_pos FROM table1) t – John

Смежные вопросы