从字符串 SQL Server 2008 中拆分字符串
Split string from a string SQL Server 2008
我想从字符串中获取值。请参阅此示例字符串格式:"(Fault Reported: Not Heating - POD - CC - We fit shower 2 years ago - Lime - €124.00 ) ( Job Report: Replaced Element & Stat. €149.00 paid CC 08/17)"
我想select第二个括号值
`(Job Report: Replaced Element & Stat. €149.00 paid CC 08/17)`
我怎样才能做到这一点?我尝试了以下方法,但无法获得实际值。
DECLARE @s VARCHAR(max)='(Fault Reported: Not Heating - POD - CC - We fit shower 2 years ago - Lime - €124.00 ) ( Job Report: Replaced Element & Stat. €149.00 paid CC 08/17) '
SELECT PARSENAME( REPLACE(@s,') (','.'),2)
PARSENAME()
不是最佳选择,因为还有其他 <unknown number>
个 .
个字符,需要先替换然后再放回去,这样很快就会变得混乱.
怎么样:
DECLARE @s varchar(max) = '(Fault Reported: Not Heating - POD - CC - We fit '
+ 'shower 2 years ago - Lime - €124.00 ) ( Job Report: Replaced Element '
+ '& Stat. €149.00 paid CC 08/17) ';
SELECT SUBSTRING(@s, CHARINDEX(') (', @s) + 2, 8000);
结果:
( Job Report: Replaced Element & Stat. €149.00 paid CC 08/17)
但是,一个例子几乎不足以提供正确的解决方案。您可能还没有考虑过很多边缘情况。最刺眼的:
- 如果只有一组括号怎么办?您想要 NULL、空字符串还是其他东西?
- 如果超过两个怎么办?你想要一切2+吗?只有第2个?只有最后一个?还有别的吗?
我想从字符串中获取值。请参阅此示例字符串格式:"(Fault Reported: Not Heating - POD - CC - We fit shower 2 years ago - Lime - €124.00 ) ( Job Report: Replaced Element & Stat. €149.00 paid CC 08/17)"
我想select第二个括号值
`(Job Report: Replaced Element & Stat. €149.00 paid CC 08/17)`
我怎样才能做到这一点?我尝试了以下方法,但无法获得实际值。
DECLARE @s VARCHAR(max)='(Fault Reported: Not Heating - POD - CC - We fit shower 2 years ago - Lime - €124.00 ) ( Job Report: Replaced Element & Stat. €149.00 paid CC 08/17) '
SELECT PARSENAME( REPLACE(@s,') (','.'),2)
PARSENAME()
不是最佳选择,因为还有其他 <unknown number>
个 .
个字符,需要先替换然后再放回去,这样很快就会变得混乱.
怎么样:
DECLARE @s varchar(max) = '(Fault Reported: Not Heating - POD - CC - We fit '
+ 'shower 2 years ago - Lime - €124.00 ) ( Job Report: Replaced Element '
+ '& Stat. €149.00 paid CC 08/17) ';
SELECT SUBSTRING(@s, CHARINDEX(') (', @s) + 2, 8000);
结果:
( Job Report: Replaced Element & Stat. €149.00 paid CC 08/17)
但是,一个例子几乎不足以提供正确的解决方案。您可能还没有考虑过很多边缘情况。最刺眼的:
- 如果只有一组括号怎么办?您想要 NULL、空字符串还是其他东西?
- 如果超过两个怎么办?你想要一切2+吗?只有第2个?只有最后一个?还有别的吗?