如何使用SQL中的表中的列替换值

时间:2014-01-08 05:56:01

标签: sql string replace

我有一张如下表格

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替换列MajorStart中的值。

有人可以建议我这样做吗?

1 个答案:

答案 0 :(得分:0)

关键是使用两个replace函数。

Update tablename
   set exp = replace (replace (exp, 'W.Major', major), 'W.Start', start);

详细了解replace on MSDN。在所有主要的RDBMS中,此函数或多或少相同。

修改

在您不知道文本中有多少关键字和替换列的情况下,我建议您创建一个存储过程,在其中执行以下操作:

  1. 使用具有两列的临时表 - 一列用于搜索键,例如'W.Major',另一个是列的名称,例如'major'。请注意,您不必存储该列中的值,只需存储列的名称。像这样: -

    key        replacement_col
    ---------- -----------------
    W.Major    major
    W.Start    start
    ... and so on.
    
  2. 现在使用主表和此临时表构建动态SQL循环。以你觉得舒服的方式循环。我建议使用以下循环方法:

    a)从主表的第一行到最后一行,选择exp列。

    b)循环显示exp的此值以搜索任何搜索关键字。在临时表中查找关键字和值。

    c)准备一个动态SQL语句,然后为您编写带有嵌套replace调用的更新查询。执行此动态SQL。