Sql server 如何在SQL Server中的已知字符之间剪切子字符串

Sql server 如何在SQL Server中的已知字符之间剪切子字符串,sql-server,tsql,Sql Server,Tsql,如何在SQL Server中的两个已知字符序列之间剪切子字符串 例如:这是表中我的字符串列 'DateTimeFormat=dd.MM.yyyy&ReportDate\u FromDate=08/11/2014 00:00:00&ReportDate\u ToDate=08/12/2014 23:59:00&Reports\u Brand:isnull=true&Reports\u Portal:isnull=true&Reports\u Currency:isnull=true&ReportB

如何在SQL Server中的两个已知字符序列之间剪切子字符串

例如:这是表中我的字符串列

'DateTimeFormat=dd.MM.yyyy&ReportDate\u FromDate=08/11/2014 00:00:00&ReportDate\u ToDate=08/12/2014 23:59:00&Reports\u Brand:isnull=true&Reports\u Portal:isnull=true&Reports\u Currency:isnull=true&ReportBy=WEEK&OrderBy:isnull=true&IncludeDataForLastHour:isnull=true&ServerName:isnull=true&User=pirman1&Reports\u Export=False&Internal'

我只想看到介于&User=和以下&.

之间的pirman1,它是和的组合,应该起作用:

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

我已经测试了这段代码,对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

在你的前端做这件事……你所说的“你的前端”是什么意思?在你的应用程序中——C、VB.NET、PHP、Ruby——不管你用什么。对于T-SQL来说,这不是一项好工作,因为它在字符串操作方面相当薄弱……这给了我&User=pirman1。如何剪切&User=选择子字符串[Parameters],开始位置,结束位置-开始位置,从选择[Parameters],CHARINDEX'&User=',[Parameters]中选择[Parameters]作为开始位置,CHARINDEX'&User=',[Parameters],CHARINDEX'&User=',[Parameters]+1作为表1 t的末端位置