Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Can';t更新SSMS中表的NVarChar列中的数据_Sql_Sql Server - Fatal编程技术网

Sql Can';t更新SSMS中表的NVarChar列中的数据

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只删除前导的正常空格。在您的

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

我试图通过删除每个条目的前导空格来更新“Name”列的内容。因此,在回答这个问题之后,我尝试运行以下程序:

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开始语句当然。宾果,这是关键。