仅当字段已具有值

时间:2017-05-25 19:00:26

标签: mysql concatenation concat

我试图在我的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'
  )

有谁知道如何做我正在寻找的事情?

2 个答案:

答案 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都有一行。