2017-03-06 60 views
0

我正在分解SQL中的一些數據。我們目前使用SQL中的databox來存儲數據。例如以下位信息將被存儲在名爲:{Script.Details01}的數據庫中。在SQL中分割數據(分隔一串數據)

{Script.Details01} =先生Ĵ布洛斯和小姐中號布羅格斯

我們正在試圖做的是驗證我們的數據,但是由於誰進入它手動,我們需要通過兩個人的名字,以拉動和他們分成兩等部門不同的數據庫。例如,{Script.Details02}{Script.Details03}.

由於我們需要驗證的數據,我們嘗試將它們設置爲cols。

"SELECT '{Script.Details01}' as Col1, 
'{Script.Details01}' as Col2, 
'{Script.Details01}' as Col3" 

Col1 Part1 = Item('Col1') Entry(1,'') 

反正我們可以分割數據,讓先生Ĵ布羅格斯會進入details02和小姐中號布洛斯將進入03?我們可以存儲輸入的數據,並將其填入問題,消息或根據答案要求它沿着某條路線走下去。

先生Ĵ布羅格斯和小姐中號布羅格斯 {Script.Details02}{Script.Details03}

P.S.我們不關心「和」,並希望在這之間的一切。 如果我有困惑的人隨時讓我知道,我會盡力而且更清楚:)

+0

什麼標準你想拆分的數據?例如,如果它的Mr-> Col 2,如果它的Miss - > Col 3. –

+0

說實話,我認爲我們只需要首先拆分數據。例如 Mr J Bloggs =進入{Script.Details02} Miss K Bloggs =進入{Script.Details03} 這些將從視圖中拉出並顯示爲例如。 J博格斯先生和K博格斯小姐。 所以我認爲重要的是先拆分它,而不是分割成更多的列? – SQLeon

回答

0

這是一個可能的解決方案。這並不是最簡潔,最簡潔的編寫方式,您需要修改這些內容以處理表名,目標列名/數據庫等,但它應該爲您提供一個很好的起點。請記住,如果您的數據輸入人員對輸入對名稱的方式不完全一致,那麼您將遇到麻煩。您可能需要使用更復雜的技術來清理剩餘的信息。

SELECT 
LEFT({Script.Details01}, CHARINDEX(' and ', {Script.Details01})) AS FirstName, 
RIGHT({Script.Details01}, (CHARINDEX(' and ', {Script.Details01}) + 5)) AS SecondName 
FROM MyTable 

見關於CHARINDEX和左,右功能這些文章以瞭解更多信息:

https://docs.microsoft.com/en-us/sql/t-sql/functions/charindex-transact-sql

https://social.technet.microsoft.com/wiki/contents/articles/17948.t-sql-right-left-substring-and-charindex-functions.aspx