Как разделить целое число и строку из одного столбца в два столбца, используя MySQL? - PullRequest
1 голос
/ 21 октября 2019

У меня есть одна такая огромная таблица

id  |  machine
1   |  1 tractor
2   |  1 platform
3   |  2 cylinder
4   |  6 bob cat
5   |  2 excavator
6   |  3 tractor
...
...

Сначала я хочу выбрать только целое число из столбца "машина" И затем выбрать только столбец из столбца "машина"

Это будет выглядетькак это

id  |  number          id  |  varchar 
1   |  1               1   |  tractor
2   |  1               2   |  platform
3   |  2               3   |  cylinder
4   |  6               4   |  bob cat
5   |  2               5   |  excavator
6   |  3               6   |  tractor

Мне нужно два запроса для этого, потому что мне нужно сложить все целое позже и получить отличные от varchar.

Я пробовал эти две команды, но не работал для моей проблемы

SELECT machine  FROM machines WHERE machine REGEXP '^[0-9]+$';


SELECT machine FROM machines WHERE machine REGEXP '[a-zA-Z]'; 

Ответы [ 2 ]

2 голосов
/ 21 октября 2019

Использование INSTR с SUBSTRING:

SELECT
    id,
    machine,
    CAST(SUBSTRING(machine, 1, INSTR(machine, ' ') - 1) AS UNSIGNED) AS machine_id,
    SUBSTRING(machine, INSTR(machine, ' ') + 1) AS machine_name
FROM machines
ORDER BY
    id;

screen capture from demo link

Демо

Вышеприведенное хорошо работает здесь, потому что INSTR, который не является особенно мощной строковой функцией, возвращает основанный на 1 индекс вхождения first в пространстве, который является разделителем, который мыхочу использовать здесь. Затем нам нужно только взять две подстроки, чтобы найти идентификатор машины и описание.

1 голос
/ 21 октября 2019

независимо от того, сколько цифр является вашим числом, это решение поможет вам получить целочисленное значение вашего столбца, используя +0. затем используйте строковые функции для получения машины name и number.

select trim(replace(machine  , machine +0, '')) as machine
  ,  machine  +0 as number 
from machines;

см. dbfiddle

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...