如何使用子查询中的子字符串更新和设置列值?

时间:2019-01-28 19:07:47

标签: sql sql-server sql-server-2012

在将列大小从MAX更改为300个字符的过程中,我想将列中的所有值更新为少于300个字符(如果使用len() > 300

UPDATE table_name 
SET comments = (SELECT SUBSTRING(comments, 1, 299) 
                FROM table_name 
                WHERE LEN(comments) > 300) 
WHERE LEN(comments ) > 300 
  AND person_id = '1234567890'

任何帮助,将不胜感激。

2 个答案:

答案 0 :(得分:1)

完全不使用子查询:

UPDATE table_name 
SET comments = SUBSTRING(comments, 1, 299) 
WHERE LEN(comments ) > 300 
  AND person_id = '1234567890'

答案 1 :(得分:0)

这需要在更改之前完成。如果更改的列的数据长度不超过300个字符,则可以进行更改。否则,SQL Server会报错。

Check This