如何在MySQL函数中从字母数字文本中修剪前导零

how to trim leading zeros from alphanumeric text in mysql function

提问人:Sean 提问时间:9/19/2008 更新时间:3/11/2021 访问量:113806

问:

有哪些 mysql 函数(如果有)可以从字母数字文本字段中修剪前导零?

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

MySQL的

评论


答:

185赞 Chris Bartow 9/19/2008 #1

您正在寻找 trim() 函数

好了,这是你的例子

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

评论

0赞 Tom Ritter 9/19/2008
++ 特别是 TRIM(LEADING '0' FROM '000345ANB095')
0赞 Peter 5/18/2016
这也适用于多个零吗?
0赞 Aniket Kapse 4/25/2020
select trim(LEADING '0' FROM '00000A')+0 from dual;为什么输出 0 而不是 A?
1赞 Dalendrion 12/23/2020
@AniketKapse 这与输出 0 而不是“A”的原因相同。“A”不是一个数字,但你正在尝试给它添加一个数字。因此,它将两个参数都转换为数字。 不表示数字,因此将其转换为 0。阅读有关类型转换的MySQL文档。SELECT 'A' + 0;A
7赞 JustinD 9/19/2008 #2

我相信你最好这样做:

SELECT TRIM(LEADING '0' FROM myField)
4赞 Jaime 8/8/2009 #3

简直完美:

SELECT TRIM(LEADING '0' FROM myfield) FROM table
4赞 Hemali 5/31/2012 #4

只需在使用之间删除空间即可TRIM ( LEADING

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

评论

0赞 Penguin 7/26/2019
棒!你节省了我的时间!
18赞 lubosdz 1/4/2013 #5

提示:

如果您的值是纯数值,您也可以使用简单的转换,例如

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

实际上会转化为

SELECT * FROM my_table WHERE accountid = 322994

在许多情况下,这已经是足够的解决方案,而且我相信性能更有效。(警告 - 值类型从 STRING 更改为 INT/FLOAT)。

在某些情况下,使用一些强制转换功能可能也是一种方法:

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

评论

0赞 mpen 2/21/2014
我认为这是一种更常见的转换为 int 的方法,而不是+ 0* 1
0赞 Septian Primadewa 12/8/2015
如果值类似于“000000”,这将非常有用。
17赞 theBuzzyCoder 2/2/2016 #6

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

USE database_name;
UPDATE `table_name` SET `field` = TRIM(LEADING '0' FROM `field`) WHERE `field` LIKE '0%';
5赞 cacti5 12/6/2016 #7

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'

如果您只想删除选定数量的前导/尾随字符,请查看 LEFT/RIGHT 函数,以及 LEN 和 INSTR 函数的组合

7赞 sanduniYW 3/2/2018 #8
SELECT TRIM(LEADING '0' FROM *columnName*) FROM *tableName* ;

这也正常工作