我有一张如下表格
Exp Major Start
---------------------------------- ----------- -------
My names ar W.Major and W.Start Hal Bark
W.Major is a doctor Mark Slope
我想编写一个SQL查询,用exp
列中的W.Major或W.start替换列Major
和Start
中的值。
有人可以建议我这样做吗?
答案 0 :(得分:0)
关键是使用两个replace
函数。
Update tablename
set exp = replace (replace (exp, 'W.Major', major), 'W.Start', start);
详细了解replace on MSDN。在所有主要的RDBMS中,此函数或多或少相同。
修改强>
在您不知道文本中有多少关键字和替换列的情况下,我建议您创建一个存储过程,在其中执行以下操作:
使用具有两列的临时表 - 一列用于搜索键,例如'W.Major'
,另一个是列的名称,例如'major'
。请注意,您不必存储该列中的值,只需存储列的名称。像这样: -
key replacement_col
---------- -----------------
W.Major major
W.Start start
... and so on.
现在使用主表和此临时表构建动态SQL循环。以你觉得舒服的方式循环。我建议使用以下循环方法:
a)从主表的第一行到最后一行,选择exp
列。
b)循环显示exp
的此值以搜索任何搜索关键字。在临时表中查找关键字和值。
c)准备一个动态SQL语句,然后为您编写带有嵌套replace
调用的更新查询。执行此动态SQL。