替换 nvarchar(50) 列中的值
Replacing values in a nvarchar(50) column
我的 SQL 服务器 table 中有一列是 nvarchar(50)
。我正在寻找一种方法来替换列中的值。
例如,这是我的原始值列:
我想要的是每个值都等于以下值:
我可以使用替换函数让它工作,但是它随后将它移动到我要替换的每个值的新列。理想情况下,我希望有一个包含我的新更改的列。
我无法使用更新功能,因为我对此只有读取权限table。
任何信息都很好。
谢谢。
示例数据
create table MyTable
(
Task nvarchar(50)
);
insert into MyTable (Task) values
('VLV LOADING/RELEASE 1st DS'),
('VLV LOADING/RELEASE 2nd DS'),
('VLV LOADING/RELEASE 3rd DS'),
('VLV LOADING/RELEASE 1st DS'),
('VLV LOADING/RELEASE 2nd DS'),
('VLV LOADING/RELEASE 3rd DS');
解决方案
选项 1
使用 case
表达式。
select case mt.Task
when 'VLV LOADING/RELEASE 1st DS' then 'Proximal Release Force-S'
when 'VLV LOADING/RELEASE 2nd DS' then 'Proximal Release Force-L'
when 'VLV LOADING/RELEASE 3rd DS' then 'Proximal Release Force-M'
end as Task
from MyTable mt;
选项 2
如果替换值在另一个 table 中可用,则使用 join
。
create table Task
(
Id int,
Task nvarchar(50),
Description nvarchar(50)
);
insert into Task (Id, Task, Description) values
(10, 'VLV LOADING/RELEASE 1st DS', 'Proximal Release Force-S'),
(11, 'VLV LOADING/RELEASE 2nd DS', 'Proximal Release Force-M'),
(12, 'VLV LOADING/RELEASE 3rd DS', 'Proximal Release Force-L');
select t.Description as Task
from MyTable mt
join Task t
on t.Task = mt.Task;
结果
Task
------------------------
Proximal Release Force-S
Proximal Release Force-M
Proximal Release Force-L
Proximal Release Force-S
Proximal Release Force-M
Proximal Release Force-L
Fiddle 查看实际情况。
我的 SQL 服务器 table 中有一列是 nvarchar(50)
。我正在寻找一种方法来替换列中的值。
例如,这是我的原始值列:
我想要的是每个值都等于以下值:
我可以使用替换函数让它工作,但是它随后将它移动到我要替换的每个值的新列。理想情况下,我希望有一个包含我的新更改的列。
我无法使用更新功能,因为我对此只有读取权限table。
任何信息都很好。
谢谢。
示例数据
create table MyTable
(
Task nvarchar(50)
);
insert into MyTable (Task) values
('VLV LOADING/RELEASE 1st DS'),
('VLV LOADING/RELEASE 2nd DS'),
('VLV LOADING/RELEASE 3rd DS'),
('VLV LOADING/RELEASE 1st DS'),
('VLV LOADING/RELEASE 2nd DS'),
('VLV LOADING/RELEASE 3rd DS');
解决方案
选项 1
使用 case
表达式。
select case mt.Task
when 'VLV LOADING/RELEASE 1st DS' then 'Proximal Release Force-S'
when 'VLV LOADING/RELEASE 2nd DS' then 'Proximal Release Force-L'
when 'VLV LOADING/RELEASE 3rd DS' then 'Proximal Release Force-M'
end as Task
from MyTable mt;
选项 2
如果替换值在另一个 table 中可用,则使用 join
。
create table Task
(
Id int,
Task nvarchar(50),
Description nvarchar(50)
);
insert into Task (Id, Task, Description) values
(10, 'VLV LOADING/RELEASE 1st DS', 'Proximal Release Force-S'),
(11, 'VLV LOADING/RELEASE 2nd DS', 'Proximal Release Force-M'),
(12, 'VLV LOADING/RELEASE 3rd DS', 'Proximal Release Force-L');
select t.Description as Task
from MyTable mt
join Task t
on t.Task = mt.Task;
结果
Task
------------------------
Proximal Release Force-S
Proximal Release Force-M
Proximal Release Force-L
Proximal Release Force-S
Proximal Release Force-M
Proximal Release Force-L
Fiddle 查看实际情况。