I have followed problem: I have one column, which contains a lot of strings. Something like this:
我跟着问题:我有一个列,其中包含很多字符串。像这样的东西:
"Shop/Kaufprozess/Zahlungsart u. Zustellung"
The first two words are always different. This could be for example
前两个词总是不同的。这可能是例如
"HTML-Title/Kaufprozess/Zahlungsart u. Zustellung"
or
要么
"Info/Template/Zahlungsart u. Zustellung“
"tpl_landingpage/Kaufprozess/Zahlungsart u. Zustellung“ etc.
From this string, I want to have only first two wards! Example: Original text:
从这个字符串,我想只有前两个病房!示例:原始文本:
„Shop/Kaufprozess/Zahlungsart u. Zustellung“
I want to keep: Shop/Kaufprozess
我想保留:Shop / Kaufprozess
How can I do this?
我怎样才能做到这一点?
Thank you!
谢谢!
2 个解决方案
#1
3
SOLUTION
解
DECLARE @ AS VARCHAR(MAX) = 'Shop/Kaufprozess/Zahlungsart u. Zustellung'
SELECT SUBSTRING (@,1, CHARINDEX('/',@, CHARINDEX('/',@,0)+1) - 1 )
OUTPUT
OUTPUT
--------------------
Shop/Kaufprozess
(1 row affected)
#2
0
Try this code
试试这个代码
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
Result
结果
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
#1
3
SOLUTION
解
DECLARE @ AS VARCHAR(MAX) = 'Shop/Kaufprozess/Zahlungsart u. Zustellung'
SELECT SUBSTRING (@,1, CHARINDEX('/',@, CHARINDEX('/',@,0)+1) - 1 )
OUTPUT
OUTPUT
--------------------
Shop/Kaufprozess
(1 row affected)
#2
0
Try this code
试试这个代码
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
Result
结果
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