代码之家  ›  专栏  ›  技术社区  ›  Sean

如何在MySQL函数中从字母数字文本中删除前导零

  •  55
  • Sean  · 技术社区  · 16 年前

    有哪些MySQL函数(如果有的话)可以从字母数字文本字段中删除前导零?

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

    8 回复  |  直到 16 年前
        1
  •  121
  •   Chris Bartow    16 年前

    你在找 trim() function .

    好吧,这是你的例子

    SELECT TRIM(LEADING '0' FROM myfield) FROM table
    
        2
  •  13
  •   mpen    11 年前

    提示:

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

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

    将实际转换为

    SELECT * FROM my_table WHERE accountid = 322994
    

    在许多情况下,这是一个足够的解决方案,而且我相信性能更有效。(警告-值类型从字符串更改为int/float)。

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

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

        3
  •  6
  •   mpen    11 年前

    我相信你最好这样做:

    SELECT TRIM(LEADING '0' FROM myField)
    
        4
  •  6
  •   Walf    6 年前

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

    USE database_name;
    UPDATE `table_name` SET `field` = TRIM(LEADING '0' FROM `field`) WHERE `field` LIKE '0%';
    
        5
  •  3
  •   Botz3000 Amir Sheng    12 年前

    只需删除 TRIM ( LEADING 使用

    SELECT * FROM my_table WHERE TRIM(LEADING '0' FROM accountid ) = '00322994' 
    
        6
  •  3
  •   Tamil Selvan C    9 年前

    简单完美:

    SELECT TRIM(LEADING '0' FROM myfield) FROM table
    
        7
  •  2
  •   cacti5    8 年前

    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函数的组合查看左/右函数。

        8
  •  0
  •   sanduniYW GERARD KANDAGOR    6 年前
    SELECT TRIM(LEADING '0' FROM *columnName*) FROM *tableName* ;
    

    这也能正常工作