如何在sql中的数字前替换字符

时间:2014-08-16 13:53:43

标签: mysql sql

我有一个表FlightId,其数据如下:

FlightId
-------
XXX158
DA245
KIKI1
UT298
GGG3
TTTT85

我希望将数据转换为:

FlightId
-------
DA158
DA245
DA001 <<
DA298
DA003 <<
DA085 << 

DA + Number必须介于001和999之间。

我该怎么做?

2 个答案:

答案 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

将反转字段转换为小数是摆脱非数字前缀的技巧。如果字符串以数字开头,然后是非数字,则将其转换为数字类型会转换数字部分并忽略其余部分。