如何在mysql中为SET字段添加值?

时间:2013-05-08 11:33:21

标签: mysql sql

我有一个名为 user 的表,其中一个类型为SET的字段名为 privs 。 此字段的允许值为:'ADD','EDIT',DELETE','ALL'。

我应该执行什么SQL查询来添加让我们说值'EDIT'到给定行的字段privs?但只有在没有这样的价值时才会这样。

修改

我试过了: 更新用户集 PRIVS = CONCAT(PRIVS, '编辑')

但是我收到了一个错误: 第1行/

列的'privs'列数据被截断

之后并非所有行都在其privs字段中具有EDIT值。

2 个答案:

答案 0 :(得分:4)

看起来MySQL可以添加第二个EDIT。但是,它确实要求列表以逗号分隔:

update  user
set     privs = concat(privs, if(length(privs)>0,',',''), 'EDIT')
where   id = 42

Example at SQL Fiddle.

答案 1 :(得分:0)

您必须将旧值与新值连接起来,然后修剪逗号以管理旧空值的情况。

UPDATE user
SET privs = TRIM(BOTH ',' WITH CONCAT(privs, ',', 'EDIT'))
WHERE id = 123