-1

私のDbには、次のような2種類のレコードがありMS-NWCSテーブルDICIPLINEの同じ列に、 (ANY TWO STRING LIKE CS、TE OR THE LIKE)の場合CSラップし、BS(CS)(OR BS(TE)にラップします) ETC) またはそのMS-NW(または MS-CS、MS-TE など) の場合は、列ディシラインから MS(NW) にラップします。

私は2つの文字列を正常に更新しましMS-NW OR MS-CSMS(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 に答える