Мне нужна помощь в обновлении записей в таблице. В настоящее время у меня есть значение %, которое я хотел бы удалить из всех записей. У меня более 4000 записей в этой таблице.

Date       Server   CPU   MEM   DRVC
------------------------------------
01/10/10   DRV01    90%   80%   40%

Я хочу, чтобы значения данных оставались неизменными, но знак "%" должен быть удален.

Date       Server   CPU   MEM   DRVC
------------------------------------
01/10/10   DRV01     90    80    40

В моем случае мне нужно обновить три записи столбца

CPU
MEM
DRVC
declare @x = CPU
declare @y = MEM
declare @z = DRVC
SELECT REPLACE(@x, '%', '') from table01;
SELECT REPLACE(@y, '%', '') from table01;
SELECT REPLACE(@z, '%', '') from table01;
0
StillLearning 2 Май 2019 в 22:15

2 ответа

Просто используйте функцию ЗАМЕНА ...

DECLARE @x VARCHAR(100) = 'hello%world';
SELECT REPLACE(@x, '%', '')

Редактировать ... добавление кода, чтобы явно показать, как выполнить фактическое ОБНОВЛЕНИЕ ...

  -- create some test data...
    IF OBJECT_ID('tempdb..#TestData', 'U') IS NOT NULL 
    BEGIN DROP TABLE #TestData; END;

    CREATE TABLE #TestData (
        [Date] DATE NOT NULL,
        [Server] VARCHAR(50) NOT NULL,
        CPU VARCHAR(4) NOT NULL,
        MEM VARCHAR(4) NOT NULL,
        DRVC VARCHAR(4) NOT NULL 
        );
    INSERT #TestData (Date, Server, CPU, MEM, DRVC) VALUES
        (GETDATE(), 'DRV01', '90%', '80%', '40%');

    -- check the initial state of the test data.
    SELECT * FROM #TestData td;

    -- UPDATE the data to remove the % symbols.
    UPDATE td SET 
        td.CPU = REPLACE(td.CPU, '%', ''),
        td.MEM = REPLACE(td.MEM, '%', ''),
        td.DRVC = REPLACE(td.DRVC, '%', '')
    FROM
        #TestData td;

    -- check the post-update state of the test data.
    SELECT * FROM #TestData td;
2
Jason A. Long 3 Май 2019 в 13:57

ЗАМЕНИТЕ () функцию:

select replace('40%','%','')
0
Edvaldo Lucena 2 Май 2019 в 19:45