如何在SQL Server中的特定字符后拆分字符串?

时间:2018-02-08 09:34:35

标签: sql sql-server split

我遇到了问题:我有一个列,其中包含很多字符串。像这样:

"Shop/Kaufprozess/Zahlungsart u. Zustellung"

前两个词总是不同的。例如,这可能是

"HTML-Title/Kaufprozess/Zahlungsart u. Zustellung" 

"Info/Template/Zahlungsart u. Zustellung“  
"tpl_landingpage/Kaufprozess/Zahlungsart u. Zustellung“ etc.

从这个字符串开始,我想只有前两个病房! 例: 原文:

„Shop/Kaufprozess/Zahlungsart u. Zustellung“

我想保留:Shop/Kaufprozess

我该怎么做?

谢谢!

2 个答案:

答案 0 :(得分:3)

解决方案

DECLARE @ AS VARCHAR(MAX) = 'Shop/Kaufprozess/Zahlungsart u. Zustellung'
SELECT SUBSTRING (@,1, CHARINDEX('/',@, CHARINDEX('/',@,0)+1) - 1 )

输出

    --------------------
    Shop/Kaufprozess

(1 row affected)

答案 1 :(得分:0)

试试此代码

DECLARE @DataGet TABLE (id INT IDENTITY,String varchar(300))

INSERT INTO @DataGet
SELECT 'Shop/Kaufprozess/Zahlungsart u. Zustellung' UNION ALL
SELECT 'Info/Template/Zahlungsart u. Zustellung'    UNION ALL
SELECT 'tpl_landingpage/Kaufprozess/Zahlungsart u. Zustellung'


;WITH cte 
     AS (SELECT 1                      AS Seq, 
                id, 
                CHARINDEX('/', string) AS Pos, 
                string 
         FROM   @DataGet 
         UNION ALL 
         SELECT seq + 1, 
                id, 
                CHARINDEX('/', string, pos + 1) AS Pos, 
                string 
         FROM   cte 
         WHERE  pos > 0 
                AND seq <= 2) 
SELECT string,SUBSTRING(string, 0, pos)AS ReqString 
FROM   (SELECT *, 
               ROW_NUMBER () 
                 OVER( 
                   partition BY id 
                   ORDER BY seq ) AS Dup 
        FROM   cte 
        WHERE  pos > 0)dt 
WHERE  dup = 2 
ORDER  BY dt.id, 
          dt.dup ASC 

结果

String                                                  ReqString
-----------------------------------------------------------------------------------
Shop/Kaufprozess/Zahlungsart u. Zustellung              Shop/Kaufprozess
Info/Template/Zahlungsart u. Zustellung                 Info/Template
tpl_landingpage/Kaufprozess/Zahlungsart u. Zustellung   tpl_landingpage/Kaufprozess