2013-03-14 99 views
0

我在SQL Server中有一個名爲Settings的表,其中包含一個包含逗號分隔值的列settingValue在SQL Server 2008中更新逗號分隔的列

該列的樣本數據:

0, 0 
US, US 
[email protected], [email protected] 

我想寫一個更新查詢,使得列settingValue只顯示一個值,它應該導致

0 
US 
[email protected] 

不知道在哪裏開始我應該先找到逗號(,),然後截斷語句?

+4

不要存放在一列逗號分隔值。重新設計你的數據模型。 – 2013-03-14 20:17:51

+0

我不存儲我想刪除它別人已經進入這些記錄重複 – user580950 2013-03-14 20:18:30

+0

這些是3個單獨的記錄 – user580950 2013-03-14 20:18:54

回答

4

如果要刪除第一個逗號後的一切,那麼你可以使用:

update yourtable 
set col = substring(col, 1, charindex(',', col)-1) 
where charindex(',', col) > 0 -- only update the rows with a comma 

SQL Fiddle with Demo

+0

或者剛從0開始,不需要-1 ? – JodyT 2013-03-14 20:22:00

+0

@JodyT只是一個習慣,從1開始。:) – Taryn 2013-03-14 20:23:46

+0

我得到這個錯誤,當我嘗試 消息537,級別16,狀態3,行1 傳遞給LEFT或SUBSTRING函數的長度參數無效。 該聲明已被終止。 – user580950 2013-03-14 20:25:14