如何从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也可能是一种方法:
我相信你最好用这个:
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