【发布时间】:2008-09-18 21:04:11
【问题描述】:
有哪些 mysql 函数(如果有)可以从字母数字文本字段中修剪前导零?
值为“00345ABC”的字段需要返回“345ABC”。
【问题讨论】:
标签: mysql
有哪些 mysql 函数(如果有)可以从字母数字文本字段中修剪前导零?
值为“00345ABC”的字段需要返回“345ABC”。
【问题讨论】:
标签: mysql
【讨论】:
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 更常见的转换为 int 的方式
如果要更新表格的一整列,可以使用
USE database_name;
UPDATE `table_name` SET `field` = TRIM(LEADING '0' FROM `field`) WHERE `field` LIKE '0%';
【讨论】:
我相信你最好这样做:
SELECT TRIM(LEADING '0' FROM myField)
【讨论】:
只需删除TRIM ( LEADING 之间的空格即可
使用
SELECT * FROM my_table WHERE TRIM(LEADING '0' FROM accountid ) = '00322994'
【讨论】:
简直完美:
SELECT TRIM(LEADING '0' FROM myfield) FROM table
【讨论】:
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 函数的组合
【讨论】:
SELECT TRIM(LEADING '0' FROM *columnName*) FROM *tableName* ;
这也可以正常工作
【讨论】: