Изменить существующие десятичные разряды в таблице SQL - PullRequest
0 голосов
/ 04 апреля 2019

У меня есть таблица StudentInfo

  StudentID  HDT      Code        NAME  
    1233    3300    CR100.0001   Jorge
    1353    3300    CR400.0002   Jorge
    1235    3300    WE1554.002   Jessica
    5536    3300    WE568.002      Tim
    1234    3301    QA1233.001    Steve
    1235    3300    WE1554.002   Jessica
    5536    3300    WE568.002      Tim

Для HDT 3300 я хочу удалить 0 в десятичном формате. Это должно быть CR100.001

      StudentID  HDT      Code        NAME  
        1233    3300    CR100.001   Jorge
        1353    3300    CR400.002   Jorge
        1235    3300    WE1554.002   Jessica
        5536    3300    WE568.002      Tim
        1234    3301    QA1233.001    Steve
        1235    3300    WE1554.002   Jessica
        5536    3300    WE568.002      Tim

Проблема в том, что HDT 3300 имеет несколько записей с тремя десятичными и четырьмя десятичными знаками. Не знаете, как изменить только определенные записи для HDT 3300. Любое предложение?

Ответы [ 2 ]

3 голосов
/ 04 апреля 2019

Если вы хотите, чтобы это навсегда изменилось:

UPDATE StudentInfo
    SET Code = REPLACE(Code, '.0', '.')
    WHERE HDT = 3300 AND Code LIKE '%.000_';

Здесь - это скрипта db <>, иллюстрирующая, что это работает.

2 голосов
/ 04 апреля 2019

Вы можете использовать следующее решение, используя REPLACE и LIKE:

UPDATE StudentInfo 
    SET Code = REPLACE(Code, '.000', '.00') 
WHERE HDT = 3300 AND Code LIKE '%.000[1-9]';

демо на dbfiddle.uk


Вы задали похожий вопрос несколько недель назад, чтобы добавить ноль к десятичным знакам.Принятый ответ следующий:

UPDATE StudentInfo
SET HDCOD=REPLACE(HDCOD,'.','.0')
WHERE HDTYPID=3300

Совершенно противоположным этому решению для удаления добавленного нуля будет следующее (аналогично решению @ Gordon):

UPDATE StudentInfo
SET HDCOD=REPLACE(HDCOD,'.0','.')
WHERE HDTYPID=3300
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...