2015-10-21 23 views
1

更換分隔符,我有以下數據如何從一個字符串中的SQL Server

abc 
pqr 
xyz, 
jkl mno 

這是一樣的空間,新的生產線,逗號分隔符選項卡分隔的一個字符串。 在單詞之前或之後可能有兩個或更多個連續空格或製表符或任何分隔符。

我想能夠做到以下

  1. 獲取個人的話移除所有開頭和結尾的分隔符關閉它
  2. 追加與個別字「或」

我我試圖實現這個目標來構建一個由OR子句分隔的T-SQL查詢。

感謝

+0

而你需要在T-SQL *中解析和構建*嗎?爲什麼? –

+0

你用什麼語言來執行這個字符串操作? –

+0

不是編程語言。我希望能夠在DBMS中執行此操作,SQL – user2869233

回答

1

我覺得你可以達到你只用SQL需要什麼(雖然我認爲使用編程語言是更好的方式),這裏是我的方法。

請注意,我將只處理逗號,換行和多空間,但你可以使用相同的技術簡單的後續刪除你不需要的角色

其餘的讓我們假設我們有一個表名稱爲ExampleData,列名爲DataBefore,另一個名稱爲DataAfter

DataBefore:有,你要清理 DataAfter行值:將舉辦清潔文本

首先,我們需要從文本

Update ExampleData set DataAfter = LTRIM(RTRIM(DataBefore))

修剪前&領先的空間(S)

其次,我們應該清除所有的逗號,並用空格替換它們(不要緊,如果我們最終會有很多空格在一起)

Update ExampleData set DataAfter = replace(replace(DataAfter,',',' '),char(13),' ')


這是在其中您可以繼續和刪除使用相同技術的任何其他字符,並用一個空格


到目前爲止,我們有一個文本取代它的一部分在之前或之後沒有空格,並且每個逗號,換行符,TAB,儀表板等字符被空格替換,讓我們繼續我們的清潔程序。

我們現在可以安全地移動上只有一個替換單詞之間的空格,這是通過使用下面的SQL語句提出:

Update ExampleData set DataAfter = replace(replace(replace(DataAfter,' ','<>'),'><',''),'<>',' ')

按您的需求,我們需要將一個或每個字之間,這是與該SQL語句實現:

Update ExampleData set DataAfter = replace(replace(replace(DataAfter,' ','<>'),'><',''),'<>',' OR ')

我們現在完成了,作爲最後一步,可能會或可能不會做出改變,我們需要以消除任何空間整個文本的末尾,以防不必要的字符是在文本的末尾,因此得到了一個空格代替,這可以通過下面的語句來實現:

Update ExampleData set DataAfter = RTRIM(DataAfter)

我們現在完成了。 :)

作爲一個測試,我已經產生的DataBefore塔內以下文字: this is just a, test, to be sure, that everything is, working, great .

和運行上個命令後,結束了與DataAfter列中這個值: this OR is OR just OR a OR test OR to OR be OR sure OR that OR everything OR is OR working OR great OR .

希望這是你想要的,讓我知道如果你需要任何額外的幫助:)

+0

這非常有幫助!讓我試試看,我正在尋找完全相同的東西! – user2869233

+1

是的,這正是我一直在尋找的!非常感謝! – user2869233

+0

我很高興這對你有幫助,請不要忘記標記爲答案,如果這個答案已經解決了問題:) –

相關問題