76

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

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

4

8 回答 8

169

您正在寻找trim() 函数

好的,这是你的例子

SELECT TRIM(LEADING '0' FROM myfield) FROM table
于 2008-09-18T21:06:01.770 回答
17

提示:

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

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

于 2013-01-04T12:13:17.950 回答
15

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

USE database_name;
UPDATE `table_name` SET `field` = TRIM(LEADING '0' FROM `field`) WHERE `field` LIKE '0%';
于 2016-02-02T04:19:16.757 回答
7

我相信你最好这样做:

SELECT TRIM(LEADING '0' FROM myField)
于 2008-09-18T21:08:22.623 回答
4

简直完美:

SELECT TRIM(LEADING '0' FROM myfield) FROM table
于 2009-08-07T21:55:48.883 回答
4

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

SELECT * FROM my_table WHERE TRIM(LEADING '0' FROM accountid ) = '00322994' 
于 2012-05-31T07:50:59.510 回答
4

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 函数的组合

于 2016-12-05T17:54:04.593 回答
3
SELECT TRIM(LEADING '0' FROM *columnName*) FROM *tableName* ;

这也可以正常工作

于 2018-03-02T07:11:52.253 回答