我是一个sql noob所以请原谅。我似乎无法在任何地方找到LTRIM的使用示例。
我的表中有一个NVARCHAR列,其中有许多条目具有前导空格 - 我假设如果我运行它应该可以做到这一点:
SELECT LTRIM( ColumnName)
From TableName;
这会产生预期效果吗?
答案 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