是否可以在单个语句中修剪列中的所有值?

Blu*_*ppy 20 sql t-sql trim

我在(MS)SQL数据库中有一个表,它有一个Id列(identity,int)和一个Name列(varchar(250)).但是,name列中的值包含(相当随机的)前导和尾随空格,因为我认为它们是从"其他内容"剪切和粘贴的(不知道是什么!).

是否可以在T-SQL中执行以下操作:

update MyTable set Name = trim(name)
Run Code Online (Sandbox Code Playgroud)

并使用修剪后的值更新所有Name列?

Bar*_*dan 60

MS SQL没有trim函数.你需要一起使用rTrim和lTrim.

update MyTable set Name = lTrim(rTrim(name))
Run Code Online (Sandbox Code Playgroud)


Stu*_*tLC 9

尝试

update MyTable set Name = LTRIM(RTRIM((name))
Run Code Online (Sandbox Code Playgroud)


bmi*_*ler 7

从 SQL Server 2017 (14.x) 及更高版本开始,有 TRIM() 函数,因此;

UPDATE MyTable set Name = TRIM(name)
Run Code Online (Sandbox Code Playgroud)

会工作得很好。或者就我而言,我还想在修剪后将空字段清空。

UPDATE MyTable set Name = NULLIF(TRIM(name), '')
Run Code Online (Sandbox Code Playgroud)