如果您有足够数量的数据,这将需要很长时间,但我怀疑有很多更好的选择使用SQL。
DECLARE @Table TABLE (TableID INT PRIMARY KEY, ColumnX VARCHAR(32))
INSERT INTO @Table VALUES (1, '(Info 1) (Info 2)');
INSERT INTO @Table VALUES (2, '(Info 1)');
INSERT INTO @Table VALUES (3, '(Info 10) (Info 20)');
INSERT INTO @Table VALUES (4, '(Info1')
INSERT INTO @Table VALUES (5, '(Info1) (Info2')
INSERT INTO @Table VALUES (6, '(Info1) Info2)')
INSERT INTO @Table VALUES (7, 'Info1')
INSERT INTO @Table VALUES (8, 'Info1)')
INSERT INTO @Table VALUES (9, NULL);
SELECT
TableID
, [Column1] = CASE WHEN PATINDEX('%(%)%', ColumnX) = 1
THEN SUBSTRING(ColumnX
, CHARINDEX('(', ColumnX) + 1
, CHARINDEX(')', ColumnX)
- CHARINDEX('(', ColumnX) - 1
)
ELSE NULL END
, [Column2] = CASE WHEN PATINDEX('%(%)%(%)%', ColumnX) = 1
THEN SUBSTRING(ColumnX
, CHARINDEX('(', ColumnX, CHARINDEX('(', ColumnX) + 1) + 1
, CHARINDEX(')', ColumnX, CHARINDEX(')', ColumnX) + 1)
- CHARINDEX('(', ColumnX, CHARINDEX('(', ColumnX) + 1) - 1
)
ELSE NULL END
FROM @Table
对此,我们不能表示感谢。我真的不得不把自己的头撞到墙上,试图自己做这件事,但那一天即将结束,我无法及时切断它。你的解决方案就像一个魅力!再次感谢。 :) – Zan 2009-04-24 14:10:47