从字符串 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个?只有最后一个?还有别的吗?