无法更新SSMS中表的NVarChar列中的数据

时间:2016-01-30 09:35:17

标签: sql sql-server

我在SSMS数据库中有一个表: table in SSMS

我试图通过从每个条目中删除前导空格来更新“名称”列的内容。在问题How to delete leading empty space in a SQL Database Table using MS SQL Server Managment Studio之后,我正在尝试运行以下内容:

UPDATE ReferenceHierarchy set Name = LTRIM(Name) 

问题是,当我尝试运行它时,它说“名称”是一个无效的列。当我查看“名称”的代码完成选项时,它会看到三个字段ID,ParentID和Sequence。有趣的是,这些是三个非NVarChar字段。

可能是什么问题?我该如何解决?

2 个答案:

答案 0 :(得分:0)

LTRIM仅删除前导的NORMAL空格。在您的情况下,它可能是Tab空间。

尝试使用TAB SPACE

    UPDATE ReferenceHierarchy set Name = LTRIM(REPLACE(Name,(CHAR(9)),'')) 

如果您的空格字符不是TAB Space和Normal空格,那么它可能是非Unicode字符 然后试试这个

    UPDATE REFERENCEHIERARCHY SET NAME = TRIM(LTRIM(CASE WHEN NAME NOT LIKE '[A-ZA-Z0-9]%'
                           THEN STUFF(NAME, 1, 1, ' ')ELSE NAME END))

答案 1 :(得分:0)

TT的评论是解决这个问题的关键。我实际上认为这里有一个有趣的道德:如果事情没有像你认为的那样发挥作用,也许你的环境不是你想象的那样。实际发生的是我在SSMS中使用了同一个数据库的旧版本,其中ReferenceHierarchy表没有“名称”列。并没有意识到,我正在针对该版本运行我的查询。针对正确版本的数据库运行它解决了我的问题。