如何在mysql函数中修剪字母数字文本中的前导零

Sea*_*ean 61 mysql

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

值为"00345ABC"的字段需要返回"345ABC".

Chr*_*tow 135

您正在寻找trim()函数.

好的,这是你的榜样

SELECT TRIM(LEADING '0' FROM myfield) FROM table
Run Code Online (Sandbox Code Playgroud)

  • 如果它已经是'0000',它将保留空白值. (2认同)

lub*_*sdz 15

小费:

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

SELECT * FROM my_table WHERE accountid = '00322994' * 1
Run Code Online (Sandbox Code Playgroud)

实际上会转换成

SELECT * FROM my_table WHERE accountid = 322994
Run Code Online (Sandbox Code Playgroud)

这在很多情况下都是充分的解决方案,而且我相信性能更有效.(警告 - 值类型从STRING更改为INT/FLOAT).

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

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


the*_*der 8

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

USE database_name;
UPDATE `table_name` SET `field` = TRIM(LEADING '0' FROM `field`) WHERE `field` LIKE '0%';
Run Code Online (Sandbox Code Playgroud)


小智 7

我相信你最好用这个:

SELECT TRIM(LEADING '0' FROM myField)
Run Code Online (Sandbox Code Playgroud)


san*_*iYW 7

SELECT TRIM(LEADING '0' FROM *columnName*) FROM *tableName* ;
Run Code Online (Sandbox Code Playgroud)

这也能正常工作


Ann*_*nna 5

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'
Run Code Online (Sandbox Code Playgroud)

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