Хотелось бы обновить данные таблицы SQL Server, удалив специальный символ «%» из всех записей - PullRequest
0 голосов
/ 02 мая 2019

Мне нужна помощь в обновлении записей в таблице.В настоящее время у меня есть значение %, которое я хотел бы удалить из всех записей.У меня более 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;

Ответы [ 3 ]

3 голосов
/ 02 мая 2019

Вы можете использовать функцию REPLACE(), чтобы удалить ее как

SELECT [Date],
       [Server],
       REPLACE([CPU], '%', '') [CPU],
       REPLACE([MEM], '%', '') [MEM],
       REPLACE([DRVC], '%', '') [DRVC]
FROM [table01];

Функция REPLACE() заменяет все вхождения указанного строкового значения ('%' в вашем случае) с другим строковым значением.

Запрос вернет:

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

Если вы действительно хотите UPDATE ваша таблица, как вы упомянули в заголовке «Хотелось бы обновить данные таблицы SQL Server, удалив специальный символ«% »из всех записей» затем

UPDATE [table01]
SET [CPU] = REPLACE([CPU], '%', ''),
    [MEM] = REPLACE([MEM], '%', ''),
    [DRVC] = REPLACE([DRVC], '%', '')
--WHERE <Type your conditions here>

Наконец,вам нужно выбрать правильный тип данных для ваших столбцов, поскольку CPU, MEM и DRVC являются числовыми значениями, затем попробуйте использовать числовой тип данных, который является правильным способом, вы можете использовать INT, BIGINTDECIMAL ... согласно вашему требованию.См. Data types и ALTER TABLE.

2 голосов
/ 02 мая 2019

Просто используйте функцию REPLACE ...

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;
0 голосов
/ 02 мая 2019

ЗАМЕНА () функция:

select replace('40%','%','')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...