0

我有一个将数据解析到其中的数据库。在解析过程中,删除了与号和分号,这弄乱了一堆 HTML 实体。

例如,我现在有这样存储的数据:

#7779avaf#299

应该是:

ṣavafī

我开始像这样替换其中的一些:

REPLACE ( FIELD1, '#7779' , 'ṣ' )

但是,我必须为每个实体编写一个新的替换。我对 RegEx 不太擅长。有没有办法可以匹配所有可能的组合 # 后跟 3 或 4 位数字,并将其替换为 后跟相同的 3 或 4 位数字,然后是分号?

4

2 回答 2

0

这是一个提取所有匹配目标文本的正则表达式:

(#\d{3,4})

然后,您可以使用它将生成的列表来生成您的REPLACE语句,或者找出语法以使用正则表达式引擎的回溯功能来动态包装匹配的组&;

T-SQL 正则表达式工作台有一些如何SELECT使用上述正则表达式的示例。以及如何REPLACE

于 2012-04-30T16:39:10.017 回答
0

如果你可以保证每个 # 都属于给定字段中的一个 HTML 实体,你可以这样做:

UPDATE myTable SET [FIELD1] = REPLACE(FIELD1, '#', '&#')
UPDATE myTable SET [FIELD1] = STUFF(FIELD1, (CHARINDEX(FIELD1, '#') + 5), 0, ';')

如果没有,您可能需要为 REGEX 匹配创建一个 CLR 函数,因为 SQL 本身不支持它。

于 2012-04-30T16:46:47.207 回答