Sql server 更新长度大于等于的行;50

Sql server 更新长度大于等于的行;50,sql-server,tsql,truncate,Sql Server,Tsql,Truncate,我有一个表,我们称它为“People”,它有一个名为“Name”的列,我们说它以前有Varchar(500)的列规范,现在它将更改为Varchar(100) 我可以编写什么TSQL来执行此更新并基本上修剪每行中包含名称>100个字符的行 到目前为止,我已经找到了识别行的方法,我知道如何更新行,所以我需要一个光标还是有其他有效的方法?(只有大约100行) 您希望在LEN(Name)上设置条件,LEN是Name字段的长度 UPDATE People SET Name = LEFT(Name, 100

我有一个表,我们称它为“People”,它有一个名为“Name”的列,我们说它以前有Varchar(500)的列规范,现在它将更改为Varchar(100)

我可以编写什么TSQL来执行此更新并基本上修剪每行中包含名称>100个字符的行

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


您希望在LEN(Name)上设置条件,LEN是Name字段的长度

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

无需为此应用游标。人们应该避免使用光标

检查此解决方案,这是另一种方法

Update People 
Set Name = Case When Len(Name) > 5 THen Left(Name, 5) else Name End
顺便说一句,标题是“长度>50”,但你的问题是长度>100,所以我留下它来匹配问题,而不是标题。
Update People 
Set Name = Case When Len(Name) > 5 THen Left(Name, 5) else Name End