2

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

我应该执行什么 SQL 查询来将值 'EDIT' 添加到给定行的字段 privs?但前提是还没有这样的值。

编辑:

我试过:更新用户集 privs=concat(privs,'EDIT')

但我收到一个错误: 第 1 行的“privs”列的数据被截断/

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

4

2 回答 2

5

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

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

SQL Fiddle 的示例。

于 2013-05-08T11:50:07.860 回答
0

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

UPDATE user
SET privs = TRIM(BOTH ',' FROM CONCAT(privs, ',', 'EDIT'))
WHERE id = 123
于 2018-10-24T07:02:10.510 回答