2

MYSQL 命令:

UPDATE `tbl_objednavka` SET
`TOTAL` = '6300',
`EANS` = CAST('8433611369655;' AS char)+CAST(`EANS` AS char),
`COUNTS` = CAST('1;' AS char)+CAST(`COUNTS` AS char)
WHERE `ID_OBJEDNAVKA`=2;

_____________________________________
|                 |                 |
|      EANS       |     COUNTS      |
+-----------------+-----------------+
|                 |                 |
|  8433611364094  |        1        |
+-----------------+-----------------+

它出于某种奇怪的原因'8433611369655;' 不要合并字符串,而是将一个数字加到另一个数字上,所以我得到这样的结果:1.6867223e+13...
我需要一个数组,所以这个:EANS 中的 8433611369655;8433611364094 和 COUNTS 中的 1;1
我可以使用 php这个,但我很想只使用 SLQ

4

2 回答 2

2

您正在使用 MySQL,因此您希望使用concat()而不是+用于字符串连接。

此外,您永远不应该将值转换为char()没有长度的值。不过,在这种情况下,我认为varchar()会是更合适的类型。

但是,我建议这个查询:

UPDATE `tbl_objednavka`
    SET `TOTAL` = '6300',
       `EANS` = concat('8433611369655;', `EANS`),
       `COUNTS` = concat('1;', `COUNTS`)
    WHERE `ID_OBJEDNAVKA`=2;

你似乎根本不需要演员表。EANS和的类型COUNTS首先应该是字符,因为您正在为它们分配字符值。

如果它们是数字,那么您需要更改表格,以便它们可以保存您想要的值。在实践中,我建议在这种情况下添加新列。或者,使用视图来创建新列。

于 2013-05-15T17:50:37.873 回答
1
UPDATE `tbl_objednavka` SET
`TOTAL` = '6300',
`EANS` = CONCAT('8433611369655;', CAST(`EANS` AS char)),
`COUNTS` = CONCAT('1;', CAST(`COUNTS` AS char))
WHERE `ID_OBJEDNAVKA`=2;

MySQL 不+用于字符串连接,您必须使用该CONCAT()函数。

于 2013-05-15T17:47:15.547 回答