[英]Split the String on condition based, but not splitting the word and result should appear in column wise
我有一個包含 3 個地址(地址 1、地址 2、地址 3、地址 4)的表 如果 LEN (地址 1) < 30,則將字符串的 rest 移動到地址 2 並在地址 2 和地址 3 列中進行相同的檢查。 例如,IF address1='FLAT K 17TH FLOOR NO 100 NUDONG NORTH', address2='ROAD INDIA (MAANGHAI) PILOT FREE TRADE', address3='ZONE THE PRD', address4='ITALY' 來自我的測試 我想要我的解決方案因為 Len(Address1,2,3,4) < 30 並且單詞應該使用空格分隔,而不是介於兩者之間。 address1='FLAT K 17TH FLOOR NO 100', address2='NUDONG NORTH ROAD Italy', address3='(MAANGHAI) PILOT FREE TRADE', address4='ZONE THE PRD ITALY'
我嘗試了 SUBSTRING 和 CHARINDEX,但它在這兩者之間打斷了我的話。
After a long try, find this solution to separate the address with each column with length of 30 and not splitting the word. There may be many easy other solutions, If anyone have other solutions, please feel free to share
DECLARE @Address1 VARCHAR(MAX)
DECLARE @TempAddress2 VARCHAR(MAX)
DECLARE @TempAddress3 VARCHAR(MAX)
DECLARE @Address2 VARCHAR(MAX)
DECLARE @Address3 VARCHAR(MAX)
DECLARE @Address4 VARCHAR(MAX)
SET @Address1 ='FLAT K 17TH FLOOR NO 100 NUDONG NORTH'
SET @Address2 = 'ROAD INDIA (MAANGHAI) PILOT FREE TRADE'
SET @Address3 = 'ZONE THE PRD'
SET @Address4 = 'ITALY'
SET @TempAddress2 = SUBSTRING(@Address1,LEN(REVERSE(SUBSTRING(REVERSE(LEFT( @Address1, 30)),CHARINDEX(' ',REVERSE(LEFT( @Address1, 30))),30)))+2,LEN(@Address1)) +' '+ @Address2
SET @TempAddress3 = SUBSTRING(@TempAddress2 + ' ' + @Address3,LEN(REVERSE(SUBSTRING(REVERSE(LEFT( @TempAddress2 + ' ' + @Address3, 30)),CHARINDEX(' ',REVERSE(LEFT( @TempAddress2 + ' ' + @Address3, 30))),30)))+2,LEN(@TempAddress2 + ' ' + @Address3))
SELECT REVERSE(SUBSTRING(REVERSE(LEFT(@Address1, 30)),CHARINDEX(' ',REVERSE(LEFT(@Address1, 30))),30)) AS Address1
,SUBSTRING(@Address1,LEN(REVERSE(SUBSTRING(REVERSE(LEFT( @Address1, 30)),CHARINDEX(' ',REVERSE(LEFT( @Address1, 30))),30)))+2,LEN(@Address1)) as Left_Address1
,REVERSE(SUBSTRING(REVERSE(LEFT( @TempAddress2, 30)),CHARINDEX(' ',REVERSE(LEFT( @TempAddress2, 30))),30)) AS Address2
, SUBSTRING(@TempAddress2,LEN(REVERSE(SUBSTRING(REVERSE(LEFT( @TempAddress2, 30)),CHARINDEX(' ',REVERSE(LEFT( @TempAddress2, 30))),30)))+2,LEN(@TempAddress2)) as Address3
, SUBSTRING(@TempAddress3,LEN(REVERSE(SUBSTRING(REVERSE(LEFT( @TempAddress3, 30)),CHARINDEX(' ',REVERSE(LEFT( @TempAddress3, 30))),30)))+2,LEN(@TempAddress3)) as Address4
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.