2010-08-03 92 views
0

我是一個sql noob的一點,所以請原諒。我似乎無法在任何地方找到LTRIM的使用示例。LTRIM用法與SQL服務器2005年

我在我的表中的nvarchar列,其中多個項目已前導空格 - 我假設,如果我運行這個它應該做的伎倆:

SELECT LTRIM(ColumnName) 
    From TableName; 

這是否會得到期望的結果呢?

+0

編輯:我所希望實現的是更新記錄。以上只是選擇和修剪。選擇,修剪和更新相應的是我在找什麼。 – Chin 2010-08-03 22:17:56

+0

鏈接:http://msdn.microsoft.com/en-us/library/ms177827%28SQL.90%29.aspx – 2010-08-03 22:20:57

+0

相關:http://stackoverflow.com/questions/1864838/remove-trailing-empty-space在字段內容 – 2010-08-03 22:23:22

回答

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

你運行它找出?這只是一個選擇,它不會炸燬你的數據庫。但是,是的。

Select LTRIM(myColumn) myColumn 
From myTable 

應該返回myColumn值與刪除任何前導空白。請注意,這只是領先的空白。

編輯來更新列,與上述情況,你會怎麼做:

Update myTable 
Set myColumn = LTRIM(myColumn) 
From myTable 
+0

我認爲我會做一個RTrim來清理右邊。 – Chin 2010-08-03 22:10:15

+0

@Chin - 是的。我相信也有一個TRIM()函數(但它看起來太長了,所以我不是100%肯定的),它將修剪前後空格。其他先生們是正確的,它不會消除回車。 – AllenG 2010-08-03 22:20:52

+0

TSQL沒有TRIM() - 只是RTRIM和LTRIM。你想TRIM,必須使用UDF或CLR ... – 2010-08-03 22:22:56

2

你的榜樣將努力消除前導空格。這隻會從數據庫中選擇它。如果你需要在你的表實際更改數據,你需要寫一個UPDATE語句是這樣的:

UPDATE TableName 
SET ColumnName = LTRIM(ColumnName) 

如果您需要從右側刪除空格,你可以使用RTRIM。

這裏的字符串函數在SQL Server 2005中的列表,我總是指: http://msdn.microsoft.com/en-us/library/ms181984(v=SQL.90).aspx

+0

謝謝,那個鏈接會派上用場。 – Chin 2010-08-03 22:27:03