sql - 替换 nvarchar(50) 列中的值
问题描述
我的 SQL Server 表中有一个列是nvarchar(50)
. 我正在寻找一种方法来替换列中的值。
例如,这是我的原始值列:
我想要的是每个值等于以下值:
我可以使用替换功能来解决这个问题,但是它会将它移动到我要替换的每个值的新列中。理想情况下,我希望在一个专栏中包含我的新更改。
我无法使用更新功能,因为我只有对该表的读取权限。
任何信息都会很棒。
谢谢。
解决方案
样本数据
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
如果替换值在另一个表中可用,则使用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
小提琴以查看实际情况。
推荐阅读
- node.js - 节点服务器如何自动重定向与浏览器相同
- php - 删除 gVIM 中的大于 (>) 字符突出显示,它是一个模板文件,而不是 HTML
- sql - T-SQL 中的指数微分
- python - 如何修复 Python(Django Rest 框架模板)中的 UnicodeDecodeError?
- javascript - 从 CSS 径向渐变的顶行像素获取颜色值
- bash - 我的猜字游戏 shell 脚本有什么问题?
- php - 定义另一个实体属性时如何使用实体属性
- android - 如何解决 ionic3 文件传输中的 ssl 问题?
- python - 如何通过使用 numpy einsum 和 numexpr 计算核函数来提高性能?
- python - 如何在函数中减去全局变量