我需要帮助来更新表中的记录。当前,我有一个%
值,我想从所有记录中删除。该表中有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 :(得分: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>
最后,由于CPU
,MEM
和DRVC
是数字值,因此您需要为列选择正确的数据类型,然后尝试使用正确的数字数据类型,您可以根据需要使用INT
,BIGINT
,DECIMAL
...。请参见 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%','%','')