与SQL Server 2005一起使用LTRIM

时间:2010-08-03 21:53:12

标签: sql sql-server sql-server-2005 tsql

我是一个sql noob所以请原谅。我似乎无法在任何地方找到LTRIM的使用示例。

我的表中有一个NVARCHAR列,其中有许多条目具有前导空格 - 我假设如果我运行它应该可以做到这一点:

SELECT LTRIM( ColumnName)
  From TableName;

这会产生预期效果吗?

3 个答案:

答案 0 :(得分:3)

不,它会修剪前导空格,但不会修剪所有空格(例如回车)。

修改 您似乎正在寻找将删除前导和尾随空格的UPDATE查询。

如果你只是意味着“正常”的空格,那么只需使用

    UPDATE TableName
   SET ColumnName = LTRIM(RTRIM(ColumnName ))

对于所有空白区域,应该这样做(来自the comments)。首先备份您的数据!

    UPDATE TableName
   SET ColumnName = 
     SUBSTRING(
    ColumnName,
    PATINDEX('%[^ ' + char(09) + char(10) + char(13)  + char(20)  + ']%', 
    ColumnName),
    LEN(ColumnName) - PATINDEX('%[^ ' + char(09) + char(10) + char(13)  + char(20)  + ']%'
   , ColumnName) - 
    PATINDEX('%[^ ' + char(09) + char(10) + char(13)  + char(20)  + ']%', 
     REVERSE(ColumnName)) + 2) 

答案 1 :(得分:2)

您的示例将用于删除前导空格。这只会从数据库中选择它。如果您需要实际更改表中的数据,则需要编写类似于:

的UPDATE语句
UPDATE TableName
SET ColumnName = LTRIM(ColumnName)

如果您需要从右侧删除空格,可以使用RTRIM。

以下是我一直引用的SQL Server 2005中的字符串函数列表: http://msdn.microsoft.com/en-us/library/ms181984(v=SQL.90).aspx

答案 2 :(得分:1)

你有没有找到它?它只是一个选择,它不会炸毁你的数据库。但是,是的。

Select LTRIM(myColumn) myColumn
From   myTable

应该删除任何前导空格的myColumn值。请注意,这只是领先的空格。

编辑要更新列,请按以上步骤操作:

Update myTable
Set myColumn = LTRIM(myColumn)
From myTable