有哪些mysql函数(如果有的话)来修剪字母数字文本字段中的前导零?
值为“ 00345ABC”的字段将需要返回“ 345ABC”。
Answers:
SELECT 'A' + 0;输出0而不是'A'。“ A”不是数字,但您正在尝试向其添加数字。因此它将两个参数都转换为数字。A不代表数字,因此将其转换为0。请阅读有关类型转换的MySQL文档。
小费:
如果您的值是纯数值,则还可以使用简单的转换,例如
SELECT * FROM my_table WHERE accountid = '00322994' * 1
实际上会转化为
SELECT * FROM my_table WHERE accountid = 322994
在许多情况下这是足够的解决方案,而且我相信性能会更有效。(警告-值类型从STRING更改为INT / FLOAT)。
在某些情况下,使用某些强制转换功能可能也是一种方法:
+ 0与* 1
如果要更新表的整个一列,可以使用
USE database_name;
UPDATE `table_name` SET `field` = TRIM(LEADING '0' FROM `field`) WHERE `field` LIKE '0%';
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和INSTR功能查看LEFT / RIGHT功能