如何通过从其中一列删除尾随空格来更新数据库表?

问题描述:

我想写一些SQL语句,所以我可以通过从其中的一列删除所有空格来更新我的整个数据库表。如何通过从其中一列删除尾随空格来更新数据库表?

这里是数据库设计:

<!-- language: lang-sql --> 
/****** Object: Table [dbo].[document_control] Script Date: 02/06/2012 21:02:07 ******/ 
SET ANSI_NULLS ON 
GO 

SET QUOTED_IDENTIFIER ON 
GO 

CREATE TABLE [dbo].[document_control](
    [id] [int] IDENTITY(1,1) NOT NULL, 
    [doc_number] [nchar](10) NOT NULL, 
    [doc_title] [nchar](256) NOT NULL, 
    [co_num] [int] NULL, 
    [co_date] [date] NULL, 
    [doc_path] [nchar](256) NULL, 
    [doc_revision] [int] NULL, 
    [doc_family] [nvarchar](5) NULL, 
CONSTRAINT [PK_document_control] PRIMARY KEY CLUSTERED 
(
    [id] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
) ON [PRIMARY] 

GO 

我有很多的空间在[doc_path]列具体。我知道我可以很容易地使用LTRIM()函数去除间隔;但是,如何编写SQL语句以便我可以更新整个数据库?

你应该改变你的列类型是这样的:

ALTER TABLE [dbo].[document_control] MODIFY COLUMN [doc_path] [nvarchar](256) 
GO 
UPDATE [dbo].[document_control] SET 
    [doc_path] = RTRIM([doc_path]) 
GO 

和可选的文档标题和数量都相同。

+0

感谢您的意见。不幸的是,它没有奏效。我在[doc_path]字段中仍有空格。 正如你可以看到我的脚本上面,字段的大小是256.在审查了一些记录后,我意识到空白空间的大小与输入的文本相等(例如/Documents/Procedures/CR/pdf/CR007.pdf)减去256(字段的总大小)。 – Fawadafr 2012-02-07 16:15:55

+0

是的,但你注意到了新类型的列 - 它只是**必须工作**毫无疑问 – 2012-02-07 16:24:16