[英]SQL Line break based on condition
SELECT之后,我得到的價值是這樣的:
Basic: 3 Years/36,000 Miles Drivetrain: 3 Years/36,000 Miles Corrosion: 6 Years/100,000 Miles Roadside Assistance: 3 Years/36,000 Miles
我希望它分成兩列:
Text Value
Basic 3 Years/36,000 Miles
Drivetrain 3 Years/36,000 Miles
etc
等等
注意 :
Basic:-----------3 Years/36,000 Miles
-之間有11個空格
3 Years/36,000 Miles----Drivetrain:
- 之間有4個車位
這對您的樣本很好用,但是您必須對真實數據進行測試才能確定。
WITH CTE_StringSplit AS
(
SELECT CAST(NULL AS NVARCHAR(MAX)) AS [Text], CAST(NULL AS NVARCHAR(MAX)) AS [Value] , CAST([Text] AS NVARCHAR(MAX)) AS RemainingText
FROM Info
UNION ALL
SELECT
SUBSTRING(RemainingText,0,CHARINDEX(' ',RemainingText))
,LTRIM(SUBSTRING(RemainingText,CHARINDEX(' ',RemainingText),CASE WHEN CHARINDEX(' ',LTRIM(SUBSTRING(RemainingText,CHARINDEX(' ',RemainingText),DATALENGTH(RemainingText)))) > 0 THEN CHARINDEX(' ',LTRIM(SUBSTRING(RemainingText,CHARINDEX(' ',RemainingText),DATALENGTH(RemainingText)))) ELSE DATALENGTH(RemainingText) END + 11))
,LTRIM(SUBSTRING(RemainingText,11 + CHARINDEX(' ',RemainingText) + CASE WHEN CHARINDEX(' ',LTRIM(SUBSTRING(RemainingText,CHARINDEX(' ',RemainingText),DATALENGTH(RemainingText)))) > 0 THEN CHARINDEX(' ',LTRIM(SUBSTRING(RemainingText,CHARINDEX(' ',RemainingText),DATALENGTH(RemainingText)))) ELSE DATALENGTH(RemainingText) END,DATALENGTH(RemainingText)))
FROM CTE_StringSplit
WHERE LEN(RemainingText)>0
)
SELECT [Text],[Value]
FROM CTE_StringSplit
WHERE [Text] IS NOT NULL
如果需要更正,請用其他示例更新問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.