我的Db中有两种类型的记录,例如MS-NW
和CS
在表DICIPLINE 我希望包裹的CS
表中(任何两个类似CS,TE或类似的字符串)然后将其包装到BS(CS)(OR BS(TE)ETC)或如果其MS-NW
(或MS-CS,MS-TE等)然后将其从列dicipline包装到MS(NW)。
我成功更新了两个字符串,以下是查询,请告诉我如何为MS-NW OR MS-CS
之类的值执行此操作,并将其转换为以下查询中的MS(NW)
格式。< / p>
UPDATE DEG set DICIPLINE = concat("BS(",DICIPLINE,")") where CHAR_LENGTH(DICIPLINE) = 2
答案 0 :(得分:2)
以下查询可帮助您更新数据。
update deg set DISIPLINE = if(length(DISIPLINE)= 2,concat('BC(',DISIPLINE,')')
,concat('MS(',substr(DISIPLINE, 4,4),')'));
答案 1 :(得分: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) = '-')
如果结果可以接受,请更新实际列。