-1

MS-NW我的 Db 中有两种类型的记录,例如在DICIPLINECS表的同一列中,如果它(任何两个字符串,如 CS、TE 或 THE LIKE)然后将其包装到 BS(CS)(或 BS(TE )ETC)或者如果它的(或MS-CS,MS-TE等)然后将其从列学科包装到MS(NW)。CSMS-NW

我成功更新了两个字符串,以下是查询,请让我知道如何为类似值执行此操作MS-NW OR MS-CS并将其转换为 MS(NW)以下查询中的格式。

UPDATE DEG set DICIPLINE =  concat("BS(",DICIPLINE,")") where CHAR_LENGTH(DICIPLINE) = 2
4

2 回答 2

2

以下查询可帮助您更新数据。

update deg set DISIPLINE = if(length(DISIPLINE)= 2,concat('BC(',DISIPLINE,')')
                                     ,concat('MS(',substr(DISIPLINE, 4,4),')'));

请参阅 Sqlfiddle 演示。

于 2012-12-26T10:15:36.377 回答
1

为了安全起见,创建一个相同类型的临时列并执行如下更新:

UPDATE deg
SET dicipline_temp = CASE
    WHEN CHAR_LENGTH(dicipline) = 2
        THEN CONCAT('BS(', dicipline, ')')
    WHEN CHAR_LENGTH(dicipline) = 5 AND SUBSTRING(dicipline, 3, 1) = '-'
        THEN CONCAT(REPLACE(dicipline, '-', '('), ')')
END
WHERE CHAR_LENGTH(dicipline) = 2 OR (CHAR_LENGTH(dicipline) = 5 AND SUBSTRING(dicipline, 3, 1) = '-')

如果结果可接受,请更新实际列。

于 2012-12-26T10:17:00.900 回答