如何从mysql函数中的字母数字文本中删除前导零

有什么mysqlfunction(如果有的话)修剪从字母数字文本字段的前导零?

值为“00345ABC”的字段将需要返回“345ABC”。

您正在寻找trim()函数 。

好的,这是你的榜样

SELECT TRIM(LEADING '0' FROM myfield) FROM table 

小费:

如果你的值是纯粹的数值,你也可以使用简单的铸造,例如

 SELECT * FROM my_table WHERE accountid = '00322994' * 1 

将实际转换成

 SELECT * FROM my_table WHERE accountid = 322994 

这在很多情况下是足够的解决scheme,我相信性能更有效。 (警告 – 值types从STRING更改为INT / FLOAT)。

在某些情况下,使用一些投射function也可能是一种方法:

http://dev.mysql.com/doc/refman/5.0/en/cast-functions.html

我相信你最好用这个:

 SELECT TRIM(LEADING '0' FROM myField) 

只删除TRIM ( LEADING之间的空间TRIM ( LEADING使用

 SELECT * FROM my_table WHERE TRIM(LEADING '0' FROM accountid ) = '00322994' 

简单完美:

 SELECT TRIM(LEADING '0' FROM myfield) FROM table 

如果要更新表格的整个列,可以使用

 USE database_name; UPDATE `table_name` SET `field` = TRIM(LEADING "0" FROM `field`); 

TRIM将允许您删除尾随,前导或全部字符。 在MySQL中使用TRIM函数的一些例子:

 select trim(myfield) from (select ' test' myfield) t; >> 'test' select trim('0' from myfield) from (select '000000123000' myfield) t; >> '123' select trim(both '0' from myfield) from (select '000000123000' myfield) t; >> '123' select trim(leading '0' from myfield) from (select '000000123000' myfield) t; >> '123000' select trim(trailing '0' from myfield) from (select '000000123000' myfield) t; >> '000000123' 

如果只想删除一定数量的前导字符或尾随字符,请结合使用LEN和INSTRfunction查看左/右function