我试图在我的php应用程序中更新mysql表。这就是我想要弄清楚的:
如果" my-field"不包含任何我想用特定数据字符串更新该字段的数据。
如果" my-field"已经包含数据我想用逗号分隔更多的数据。
"我的场"被设置为" NOT NULL"
以下是我使用的代码,我认为这与我需要的代码接近,但它不起作用。
UPDATE my-table SET
my-field =
IF(
LENGTH('my-field'),
CONCAT_WS(
CHAR(44 USING UTF8),
'my-field',
'if-my-field-has-length-data'
),
'if-my-field-has-NO-length-data');
我也尝试过以下代码。它确实有效。但是,它最终会在开头添加一个逗号,如下所示:
note the comma here => ,data-set-1,data-set-2
我正在寻找这样的结果:
note no comma on first data set => data-set-1,data-set-2
UPDATE my-table SET
my-field =
CONCAT_WS(
CHAR(44 USING UTF8),
'my-field',
'general-data'
)
有谁知道如何做我正在寻找的事情?
答案 0 :(得分:2)
从' my-field'
中删除引号UPDATE my-table SET
my-field =
IF(
LENGTH(my-field),
CONCAT_WS(
CHAR(44 USING UTF8),
my-field,
'if-my-field-has-length-data'
),
'if-my-field-has-NO-length-data');
答案 1 :(得分:-1)
我建议不要在逗号分隔的字符串中存储值。让我假设您必须出于某种原因:
UPDATE mytable
SET myfield = CONCAT(COALESCE(CONCAT(myfield, ','), ''), @newvalue)
WHERE . . .;
但是,实际上,您应该使用联结表,每个字段值和表中的每个id都有一行。