【发布时间】:2017-04-17 22:35:31
【问题描述】:
我在下面有一个 SQL 表(注意:用于使其更易于阅读的引号
Table1.Description
"HOUSING,WRAP RECESSED"
"HOUSING,ASSEMBLY 2-FEED"
"LENS,FLUSH SUS"
Table2.Abbreviations
ASSY = ASSEMBLY
FD = FEED
FLUSH = FL
HSG = HOUSING
LENS = LNS
RECESSED = REC
我想更新,或者类似于替换和创建一个新表(两者都可以),Table1.Description 和 Table2.Abbreviations。它应该是这样的:
Table1.Description
"HSG,WRAP REC"
"HSG,ASSY 2-FD"
"LNS,FL SUS"
【问题讨论】:
-
一种方法(不一定是最好的方法)是使用游标遍历 Table1 中的每一行并执行一个过程,使用 Table2 中的数据根据需要多次执行字符串替换,直到没有可以更换。
-
是否有任何重叠替换的可能性,例如“FOOD”变成“FD”,“FOO”变成“FU”?如果是这样,您将需要像 Cappelletti 博士那样的解决方案,在尝试替换之前“标记”输入字符串。如果替换可以递归发生,例如“FOOD WRAP”变成“FD WRP”,“WRP”变成“RP”。你想一直替换下去吗?
-
@HABO,到目前为止所有的方法都是row-by-row。考虑到替换的排序顺序,这没有问题。甚至可以将一个短语替换为其他内容,并在其他替换之后重新替换它。在我的一个项目中,我们使用了一个带有两个参数的函数:一个带有所有替换的 key-value-pair-XML 和一个
NVARCHAR(MAX)。我们将其用于复杂的多级操作,以从模板中创建 CDA 文档。只要您只处理一个文档,它的运行速度就惊人地快...