2013-03-14 56 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