mysql 仅当字段已有值时才连接数据

mysql concatenate data only if field already has value

我正在尝试更新我的 php 应用程序中的 mysql table。这就是我想要弄清楚的:

如果 "my-field" 不包含任何数据,我想用特定的数据字符串更新该字段。

如果 "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'
  )

有人知道如何做我正在寻找的东西吗?

删除 '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');

我不建议将值存储在逗号分隔的字符串中。让我假设您出于某种原因必须这样做:

UPDATE mytable 
    SET myfield = CONCAT(COALESCE(CONCAT(myfield, ','), ''), @newvalue)
    WHERE . . .;

不过,实际上,您应该使用联结 table,在您的 table 中每个字段值和每个 ID 一行。