更新长度 > 50 的行

update rows where length > 50

我有一个 table 让我们称它为 'People' 它有一个名为 'Name' 的列 让我们说它曾经有 Varchar(500) 的列规范,现在它将是更改为 Varchar(100)

我可以编写什么 TSQL 来执行此更新,基本上 trim 每行包含一个名称 > 100 个字符

到目前为止我已经知道如何识别行,我知道如何更新行,所以我需要一个游标还是有其他有效的方法? (只有大约 100 行)

SELECT Id, LEFT (Name, 100) FROM People

您想以 LEN(Name) 为条件,它是名称字段的长度。

UPDATE People
SET Name = LEFT(Name, 100)
WHERE LEN(Name) > 100

无需为此应用 CURSOR。并且应该始终避免使用 CURSORS。

检查此解决方案,这是可以完成此操作的另一种方法。

Update People 
Set Name = Case When Len(Name) > 5 THen Left(Name, 5) else Name End