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