Mysql 如何在sql中替换数字前的字符
我有一个表FlightId,其中包含如下数据:Mysql 如何在sql中替换数字前的字符,mysql,sql,Mysql,Sql,我有一个表FlightId,其中包含如下数据: FlightId ------- XXX158 DA245 KIKI1 UT298 GGG3 TTTT85 我想将数据转换为: FlightId ------- DA158 DA245 DA001 << DA298 DA003 << DA085 << FlightId ------- DA158 DA245 DA001在MySQL中有一种神秘的方法: select concat('DA', lpad(rev
FlightId
-------
XXX158
DA245
KIKI1
UT298
GGG3
TTTT85
我想将数据转换为:
FlightId
-------
DA158
DA245
DA001 <<
DA298
DA003 <<
DA085 <<
FlightId
-------
DA158
DA245
DA001在MySQL中有一种神秘的方法:
select concat('DA', lpad(reverse(reverse(FlightId) + 0), 4, '0'))
这将反转原始字符串并添加0
,以将其转换为数字。然后,reverse()
SELECT IF(FLightId LIKE 'DA%',
FlightId,
CONCAT('DA', LPAD(REVERSE(CAST(REVERSE(FlightId) AS DECIMAL)), 3, '0'))) AS FlightId
FROM FlightTable
将反转字段强制转换为十进制是消除非数字前缀的一个技巧。如果字符串以数字开头,然后是非数字,则将其转换为数字类型会转换数字部分,而忽略其余部分。这在很大程度上取决于您使用的SQL方言-是MySQL吗?PostgreSQL?SQlite?还原,转换为int,重新还原,填充,然后concat。数字>=1000的方法会因您希望输出的方式而异。