我有一个表FlightId,其数据如下:
FlightId
-------
XXX158
DA245
KIKI1
UT298
GGG3
TTTT85
我希望将数据转换为:
FlightId
-------
DA158
DA245
DA001 <<
DA298
DA003 <<
DA085 <<
DA + Number必须介于001和999之间。
我该怎么做?
答案 0 :(得分:0)
在MySQL中这是一种有点神秘的方法:
select concat('DA', lpad(reverse(reverse(FlightId) + 0), 4, '0'))
这会反转原始字符串并添加0
以将其转换为数字。然后,reverse()
再次获取原始数字并用零填充它。
答案 1 :(得分:0)
SELECT IF(FLightId LIKE 'DA%',
FlightId,
CONCAT('DA', LPAD(REVERSE(CAST(REVERSE(FlightId) AS DECIMAL)), 3, '0'))) AS FlightId
FROM FlightTable
将反转字段转换为小数是摆脱非数字前缀的技巧。如果字符串以数字开头,然后是非数字,则将其转换为数字类型会转换数字部分并忽略其余部分。