Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何在sql中替换数字前的字符_Mysql_Sql - Fatal编程技术网

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

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,其中包含如下数据:

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的方法会因您希望输出的方式而异。