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 一行。
我正在尝试更新我的 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 一行。