Sql Can';t更新SSMS中表的NVarChar列中的数据
我在SSMS数据库中有一个表: 我试图通过删除每个条目的前导空格来更新“Name”列的内容。因此,在回答这个问题之后,我尝试运行以下程序:Sql Can';t更新SSMS中表的NVarChar列中的数据,sql,sql-server,Sql,Sql Server,我在SSMS数据库中有一个表: 我试图通过删除每个条目的前导空格来更新“Name”列的内容。因此,在回答这个问题之后,我尝试运行以下程序: UPDATE ReferenceHierarchy set Name = LTRIM(Name) 问题是,当我尝试运行它时,它会说“Name”是无效列。当我查看“Name”的代码完成选项时,它会看到三个字段ID、ParentID和Sequence。有趣的是,这是三个非NVarChar字段 有什么问题吗?如何修复它?LTRIM只删除前导的正常空格。在您的
UPDATE ReferenceHierarchy set Name = LTRIM(Name)
问题是,当我尝试运行它时,它会说“Name”是无效列。当我查看“Name”的代码完成选项时,它会看到三个字段ID、ParentID和Sequence。有趣的是,这是三个非NVarChar字段
有什么问题吗?如何修复它?LTRIM只删除前导的正常空格。在您的情况下,它可能是选项卡空间 试试这个选项卡空间
UPDATE ReferenceHierarchy set Name = LTRIM(REPLACE(Name,(CHAR(9)),''))
如果空格字符不是制表符空格和普通空格,则可能是非Unicode字符
那就试试这个
UPDATE REFERENCEHIERARCHY SET NAME = TRIM(LTRIM(CASE WHEN NAME NOT LIKE '[A-ZA-Z0-9]%'
THEN STUFF(NAME, 1, 1, ' ')ELSE NAME END))
TT的评论是解决这一问题的关键。事实上,我认为这里有一个有趣的寓意:如果事情没有按你认为应该的方式进行,也许你的环境不是你认为的那样。实际发生的是,我在SSMS中使用了同一数据库的旧版本,其中ReferenceHierarchy表没有“name”列。在没有意识到的情况下,我对那个版本运行了我的查询。用正确的数据库版本运行它解决了我的问题。您确定用正确的数据库运行吗?用
USE开始语句代码>当然。宾果,这是关键。