我有一张这样的大桌子
id | machine
1 | 1 tractor
2 | 1 platform
3 | 2 cylinder
4 | 6 bob cat
5 | 2 excavator
6 | 3 tractor
...
...
我想首先从“机器”列中仅选择整数,然后从“机器”列中仅选择varchar
看起来应该像这样
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]';
答案 0 :(得分:2)
将<label>
<input class="custom" name="pay-type" value="mc" type="radio" checked />
<span>Emoney</span>
</label>
.custom {
background-color: initial;
cursor: default;
-webkit-appearance: radio;
box-sizing: border-box;
margin: 3px 3px 0px 5px;
padding: initial;
border: initial;
}
与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;
(不是一个特别强大的字符串函数)返回 first 出现的空间的从1开始的索引,它是定界符我们想在这里使用。然后,我们只需要获取两个子字符串即可找到机器ID和描述。
答案 1 :(得分:1)
无论您的号码有多少位数,此解决方案都将帮助您使用+0
检索列的整数值。然后使用字符串函数获取机器name
和number
。
select trim(replace(machine , machine +0, '')) as machine
, machine +0 as number
from machines;
请参阅dbfiddle