0
A
回答
1
使用解析/分割功能和CROSS的幫助應用
Declare @YourTable table (ID int,[Desc] varchar(500))
Insert Into @YourTable values
(1,'Purched Order 12345 ||COXFF6||'),
(2,'Purched Order 12345 ||COXFF6||,||COX888|| haha ||COX777||')
Select ID
,[Desc] = '||'+B.RetVal+'||'
From @YourTable A
Cross Apply (Select *
From [dbo].[udf-Str-Parse](Replace('.'+A.[Desc],' ','.'),'||')
Where RetVal not like '[.,]%'
) B
返回
ID Desc
1 ||COXFF6||
2 ||COXFF6||
2 ||COX888||
2 ||COX777||
UDF如果需要。 (如果不能使用UDF,邏輯可以遷移到交叉應用中)
CREATE FUNCTION [dbo].[udf-Str-Parse] (@String varchar(max),@Delimiter varchar(10))
Returns Table
As
Return (
Select RetSeq = Row_Number() over (Order By (Select null))
,RetVal = LTrim(RTrim(B.i.value('(./text())[1]', 'varchar(max)')))
From (Select x = Cast('<x>'+ Replace(@String,@Delimiter,'</x><x>')+'</x>' as xml).query('.')) as A
Cross Apply x.nodes('x') AS B(i)
);
--Select * from [dbo].[udf-Str-Parse]('Dog,Cat,House,Car',',')
--Select * from [dbo].[udf-Str-Parse]('John Cappelletti was here',' ')
1
googlethe substring()和charIndex()功能。
表達式charIndex('||', @desc)' will return the position of the first pair of pipes, so
2 + charIndex('||',@desc)'是你想要的第一個字符的位置(C),然後爲了得到長度,我們需要減去開始位置結束的位置。最終位置是第二對管子的charindex。使用charIndex函數的最後一個[可選]參數,該參數指定從何處開始查找。如果您將其設置爲第一對管道的位置,則charindex將查找下一對(第二對)的位置:charIndex('||', @desc, charIndex('||', @desc))
。字符串提取的長度是它們之間的區別,(調整位)
declare @desc varchar(max) = 'Purchased Order ||COFX123412||'
Select 2+charIndex('||', @desc), -- position of start of COFX123412
charIndex('||', @desc, charIndex('||', @desc)), -- pos of 2nd pair of pipes
2+charIndex('||', @desc))-2-charIndex('||', @desc), -- Length
substring(@desc, 2+charIndex('||', @desc),
charIndex('||', @desc, 2+charIndex('||', @desc))-
2-charIndex('||', @desc))
+0
請添加一些說明。 – DimaSan
相關問題
- 1. SQL查詢不獲取所有內容
- 2. 提取字符串中兩個符號之間的所有內容
- 3. Coldfusion正則表達式獲取括號內的所有內容
- 4. preg_replace但@符號的所有內容
- 5. 刪除括號內的所有內容
- 6. 獲取第一個字符後的所有內容
- 7. 如何獲取這兩個字符串之間的所有內容?
- 8. 獲取內容 - 獲取所有內容,從一個特定的亞麻布編號開始
- 9. 加入兩個表的所有內容
- 10. Jquery - 獲取一行的所有內容
- 11. 獲取特殊內容的所有div
- 12. MySql - 獲取所有發生的內容
- 13. 獲取所有桶的內容對象
- 14. 替換SQL Server中括號內的所有內容
- 15. SQL更新 - 內的所有內容()
- 16. 刪除兩個方括號之間的所有內容
- 17. 如何從PHP中的括號中獲取所有內容?
- 18. 如何提取括號內的所有內容
- 19. WPF獲取所有控件「內容」
- 20. 結合兩個SQL查詢來從一個表中使用where子句獲取所有內容,並且只從另一個表中獲得所有內容
- 21. 如何獲取SQL Server中元數據的所有內容?
- 22. 如何獲取所選內容的HTML標記內的所有內容asp.net代碼隱藏內容
- 23. preg_replace是否可以替換兩個符號之間的所有內容?
- 24. 如何使用圓括號和所有內容獲取SQL Server列定義?
- 25. 使用sed,刪除兩個字符之間的所有內容
- 26. 提取R中前兩個單詞後的所有內容
- 27. 獲取兩個字符串之間的內容PHP
- 28. ruby watir - 從搜索中獲取所有div的內部內容
- 29. 獲取html標籤內/ html標籤之間的所有內容
- 30. 從XML節點獲取所有內容作爲字符串
發佈您的代碼和問題描述。 – Blorgbeard
使用SQL以外的東西,因爲每行項目的數量似乎是動態的 – scsimon