1

我在 MS-SQL 中有一个包含地址的列,用户在括号中添加了一些与地址有关的附加信息。有时它在地址的末尾有时它在中间。我需要删除该文本有没有办法删除括号内的文本,然后将其插入另一个表格?

例如文本将是

58795 North Test Drive (Main Office)

或者看起来像这样

450 South green Avenue (Green Ave. Office)  Suite 200
4

2 回答 2

5

假设正好有一个开括号和一个闭括号,那么存在一个简单的解决方案。我使用 T1 作为原始表名,使用 T2 作为新表名。

BEGIN TRANSACTION

INSERT INTO T2
SELECT ID, SUBSTRING([Address], CHARINDEX('(', [Address]) + 1, CHARINDEX(')', [Address]) - CHARINDEX('(', [Address]) - 1)
FROM T1
WHERE CHARINDEX('(', [Address]) > 0
AND CHARINDEX(')', [Address]) > 0

UPDATE T1
SET [Address] = SUBSTRING([Address], 0, CHARINDEX('(', [Address]))
              + SUBSTRING([Address], CHARINDEX(')', [Address]) + 1, LEN([Address]))

--检查你的结果

COMMIT TRANSACTION
于 2013-10-16T23:29:15.203 回答
0

我想到了。

SELECT Replace(Stuff(CONVERT(VARCHAR (max), metavalue), 1, Charindex('(',    CONVERT(VARCHAR     (max), metavalue)), ''), ')', '')
FROM   metavalues mv
WHERE  mv.subfield = 3007 
于 2013-10-16T23:50:37.500 回答