1
我在表中有一個字段,其中包含要刪除的前導字符和尾隨字符。在MSSQL中結合LTRIM和RTIM和REPLACE函數
本聲明
SELECT全名AS 類別FROM dbo.inventory
在一個表(示出部分結果)產生這樣的結果:
- 零件 - 皮帶位:Z .360J8
- 零件 - 皮帶:Z.360J14 個
- 零件 - 腰帶:Z.36355-123
- 零件 - 塑料&框架:Z.103196-001
- 零部件 - 電力電纜/電線:Z.P037153674
我想刪除這將刪除「部件 - 」破折號之前,一切都尾隨冒號「:」這樣我就可以將只剩類別,並得到像這樣的表:
- 腰帶
- 腰帶 個
- 腰帶
- 塑料&框架
- 電力電纜/電線
我已經嘗試這樣做,成功取出了前面的「零件 - 」,但成功的結腸後,除去一切相結合的聲明「:」
SELECT LTRIM(RTRIM(REPLACE(全名, '零件 - ', '')))AS 類別FROM dbo.inventory
產生以下結果:
- 腰帶:Z.360J8
- 腰帶:Z.360J14
- 腰帶:Z.36355-123
- 塑料&框架:Z.103196-001
- 電纜/電線:Z.P037153674
謝謝你他LP!
謝謝您的回覆,產生這種錯誤的語句:傳遞給LEFT或SUBSTRING函數 無效的長度參數。 當我刪除「-1」時,語句執行時沒有錯誤,但包含了冒號。 SELECT REPLACE(LEFT(全名,CHARINDEX( ':',全名)), '零件 - ', '')AS 類別 - 腰帶: - 腰帶: - 腰帶: - 塑料與框架: - 電纜/電線: –
如果有沒有冒號的行,你會得到這個錯誤(有效地,位置= -1)。刪除-1可以避免出現錯誤,但可能會返回一個空白字符串給那些沒有冒號的行。如果您可以找到這些行,請發佈示例以及您希望如何處理這些行,我們可以相應地調整代碼。同時,這可以作爲一個非錯誤的解決方法:SELECT REPLACE(REPLACE(LEFT(Fullname,CHARINDEX(':',Fullname)),'Parts - ',''),':','') –
結合兩個替換語句來實現結果,你讓我解決了一個問題,謝謝。 REPLACE(REPLACE(LEFT(FullName,CHARINDEX(':',FullName)),'Parts - ',''),':','') –