我有一个名为user的表,其类型为 SET 类型的字段,名为privs。该字段的允许值为:'ADD'、'EDIT'、DELETE'、'ALL'。
我应该执行什么 SQL 查询来将值 'EDIT' 添加到给定行的字段 privs?但前提是还没有这样的值。
编辑:
我试过:更新用户集 privs=concat(privs,'EDIT')
但我收到一个错误: 第 1 行的“privs”列的数据被截断/
之后,并非所有行在其 privs 字段中都有 EDIT 值。
看起来 MySQL 可以添加第二个EDIT
. 但是,它确实要求列表以逗号分隔:
update user
set privs = concat(privs, if(length(privs)>0,',',''), 'EDIT')
where id = 42
您必须将旧值与新值连接起来,然后修剪逗号以管理旧空值的情况。
UPDATE user
SET privs = TRIM(BOTH ',' FROM CONCAT(privs, ',', 'EDIT'))
WHERE id = 123