我遇到了问题:我有一个列,其中包含很多字符串。像这样:
"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
我该怎么做?
谢谢!
答案 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