1
剛纔對這種情況有了一個想法,其中包含數據'A,B,C,D,A,B,E,D'的列應該被刪除爲'A,B,C ,d,E」。我可以通過分割劃分的值,重複和重新分兩步來考慮這一點。我不確定是否有任何簡單的方法來實現這一點,我是否錯過了任何明顯的東西?刪除SQL列中的分隔文本
剛纔對這種情況有了一個想法,其中包含數據'A,B,C,D,A,B,E,D'的列應該被刪除爲'A,B,C ,d,E」。我可以通過分割劃分的值,重複和重新分兩步來考慮這一點。我不確定是否有任何簡單的方法來實現這一點,我是否錯過了任何明顯的東西?刪除SQL列中的分隔文本
在SQL Server上,我會做這樣的事情(基於this article):
DECLARE @TEXT nvarchar(400) = 'A,B,A,C,D,B,D';
DECLARE @DEDUPTEXT nvarchar(400);
WITH Split(stpos,endpos)
AS(
SELECT 0 AS stpos, CHARINDEX(',',@text) AS endpos
UNION ALL
SELECT endpos+1, CHARINDEX(',',@text,endpos+1)
FROM Split
WHERE endpos > 0
)
SELECT @DEDUPTEXT = COALESCE(@DEDUPTEXT+ ',', '') + [Data]
FROM (
SELECT DISTINCT
'Data' = SUBSTRING(@text,stpos,COALESCE(NULLIF(endpos,0),LEN(@text)+1)-stpos)
FROM Split) dedup
SELECT @DEDUPTEXT
,它基本上是你已經在你的問題描述。 不知道這可能對你有幫助,隨時downvote - 我會最終刪除它。
感謝您展示答案。我仍然開放其他方式 – SriniV
您應該修復您的數據結構,並且不要將值列表存儲爲字符串。每個值應位於聯結表中的單獨行上。 –
這是一個很好的例子,說明爲什麼在一個列中存儲CSV數據通常是一個糟糕的主意:它使得處理數據變得非常困難。對您來說最好的長期解決方案是將您的數據標準化。 –
我同意,這不是一個真實的案例。只是想知道是否有什麼要解決這個問題。 – SriniV