【问题标题】:Replacing values in a nvarchar(50) column替换 nvarchar(50) 列中的值
【发布时间】:2021-06-07 04:45:33
【问题描述】:

我的 SQL Server 表中有一个列是 nvarchar(50)。我正在寻找一种方法来替换列中的值。

例如,这是我的原始值列:

我想要的是每个值都等于以下值:

我可以使用替换函数来实现这一点,但是它会将它移动到我要替换的每个值的新列中。理想情况下,我希望有一个包含我的新更改的列。

我无法使用更新功能,因为我只有对该表的读取权限。

任何信息都会很棒。

谢谢。

【问题讨论】:

  • SSMS 只是一个客户端工具,不是 SQL Server
  • “但是它会将它移动到我要替换的每个值的新列”这是什么意思?除非您的更新有误,否则数据不会更改列。
  • 谢谢大家,所以我的意思是当我使用替换功能时它只是创建一个新列,我想要的是在一列上进行更改
  • 如果您有一个现有的select 查询需要更改,请edit 并添加到

标签: sql sql-server tsql replace nvarchar


【解决方案1】:

样本数据

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

Fiddle 了解实际情况。

【讨论】:

  • 我没有管理员权限,所以我只能更新查询,我实际上不能更新列。这对查询结果有用吗?
  • 哦,所以您想更改结果集中的数据而不是实际数据?喜欢this?
  • 是的,正是桑德,这就是我需要做的
  • 您不需要“管理员”访问UPDATE 列。 sysadmin 特权但您在 SQL Server 上执行 anything,@d_chawke,字面意思是 anything。
  • 感谢Larnu,但我只有这个表的读取权限,所以更改只能在查询结果中
猜你喜欢
  • 2014-02-14
  • 2013-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-19
  • 2020-03-14
  • 2018-07-22
  • 1970-01-01
相关资源
最近更新 更多