要通过从所有记录中删除特殊字符“%”来更新SQL Server表数据

时间:2019-05-02 19:15:04

标签: sql sql-server tsql

我需要帮助来更新表中的记录。当前,我有一个%值,我想从所有记录中删除。该表中有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 个答案:

答案 0 :(得分:3)

您可以使用 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>

最后,由于CPUMEMDRVC是数字值,因此您需要为列选择正确的数据类型,然后尝试使用正确的数字数据类型,您可以根据需要使用INTBIGINTDECIMAL...。请参见 Data types ALTER TABLE

答案 1 :(得分:2)

只需使用REPLACE函数...

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

编辑...添加代码以显式显示如何执行实际的UPDATE ...

  -- 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 :(得分:0)

REPLACE()函数:

select replace('40%','%','')