2

我在“column1”列中有多个结构记录,我想更新同一列中的类型。

这些字段仅在一个字段中包含有关语言、类别级别和名称的信息。

信息用符号分隔,如下所示:

  1. " : " (两点) 用词根分隔语言(language% : Top/% )
  2. “/”(斜线)按类别分隔根(Top / level_1),按不同级别类别分隔类别(level_1 / level_2)。
  3. 因此FIELD将具有以下形式“语言:顶级/级别/级别”

存储在 FIELDS 上的信息来自两个不同的来源,一个是内部的,另一个没有 root(Top/) 的 FIELDS 来自外部来源,必须由 SQL 更新

真实示例字段:

<b>英文</b>:level/Test/later

<b>英文</b>:Top/level/Test/later

真实示例表:

**before**                                           **after**
language0:Top/level_0/name_category                  language0:Top/level_1/name_category
language1:name_test2/name_category                   language1:name_test2/name_category
language2:level_1/name_category                      language2:Top/level_1/level_2/name_category
language3:level_1/level_2/name_category              language3:Top/level_1/level_2/name_category
language4:level_1/level_2/level_3/name_category      language4:Top/level_1/level_2/level_3/name_category

第一行已经改变,所以我们只需要选择那些以 "language%:level_1/%" 开头的记录

table_example1

id    **column1**                       

1    language0:Top/level_1/level_2/level_3/level_4
2    language1:name_test2/etc/
3    language2:level_1/level_2/level_3/level_4
4    language3:level_1/level_2/level_3
5    language3:level_1/level_2
6    language%:level_1/

笔记:

  • 示例中只有这些字段必须更新:行 id 3、4、5、6 和表中只有 column1
  • 结果必须类似于 line id 1 column1: language0:Top/name_test/etc/etc/
  • 第 2 行第 1 列的字段language1:name_test2/etc/将被忽略是不同的格式和存储的不同信息。
  • 不更改第 2 行的基础是不同的链接值:name_test2(name_test) LIKE 'name_test/%' only
  • 这个字段中不存在的#符号只是为了划定你可以在列之前,列之后看到
  • 只有在以下两点 ( : ) 之后正好有表达式后跟斜线 (level_1/) 时,才应更新 FIELD

不得修改以其他方式开始的其他记录。

我怎样才能做到这一点?

4

1 回答 1

1
UPDATE `table_example1` SET `column1` = REPLACE(column1,':name_test/',':Top/name_test/');

在使用此查询之前创建备份。

于 2012-10-21T17:58:37.673 回答