1

我在使用 mysql 查询时遇到问题,我有一个表,其中包含订单数量(表中的第一个 int)和它的描述。不幸的是,我无法更改数据库结构。我需要在查询中拆分这些,我有以下查询;

Load table:
3 pallets 120 x 100 x 100
12 pallet 120 x 100 x 84


SELECT *,
IF (load * 1! = 0, LEFT (load, 1), '1 ') AS cargo_quantity,
IF (load * 1! = 0, SUBSTR (load, 2), load) AS cargo_description
FROM transport

当金额低于 10 时查询有效,当数字为 10 或更高时查询将失败。我真的可以使用一些帮助来解决这个问题,有什么建议吗?

4

1 回答 1

1

如果您确定条目的第一个“列”始终由“”分隔,那么您可以这样做:

SELECT *, 
  LEFT(loadcolumn, LOCATE(" ",loadcolumn)) AS cargo_quantity,
  SUBSTR(loadcolumn, LOCATE(" ",loadcolumn)+1)  AS cargo_description
  FROM transport

这里有一个带有工作解决方案的sqlfiddle :

请注意,“加载”似乎是一个mysql 关键字。我不确定,所以在我的sqlfiddle中我重命名了它。

编辑:

如果您的“第一列”不存在,这是改进的解决方案:

SELECT *, 
IF (concat('',(LEFT(loadcolumn, LOCATE(" ",loadcolumn))) * 1) = 
    LEFT(loadcolumn, LOCATE(" ",loadcolumn)), 
    LEFT(loadcolumn, LOCATE(" ",loadcolumn)), '1') AS cargo_quantity,
IF (concat('',(LEFT(loadcolumn, LOCATE(" ",loadcolumn))) * 1) = 
    LEFT(loadcolumn, LOCATE(" ",loadcolumn)), 
    SUBSTR(loadcolumn, LOCATE(" ",loadcolumn)+1), loadcolumn) AS cargo_description
FROM transport

改进的 sqlfiddle

于 2013-04-26T09:00:00.080 回答