【问题标题】:how to trim leading zeros from alphanumeric text in mysql function如何从mysql函数中的字母数字文本中修剪前导零
【发布时间】:2008-09-18 21:04:11
【问题描述】:

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

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

【问题讨论】:

    标签: mysql


    【解决方案1】:

    您正在寻找trim() function

    好的,这是你的例子

    SELECT TRIM(LEADING '0' FROM myfield) FROM table
    

    【讨论】:

    • ++ 特别是 TRIM(LEADING '0' FROM '000345ANB095')
    • 这也适用于多个零吗?
    • 从双重选择修剪(LEADING '0' FROM '00000A')+0;为什么这个输出 0 而不是 A ?
    • @AniketKapse 这与SELECT 'A' + 0; 输出 0 而不是 'A' 的原因相同。 'A' 不是数字,但您正在尝试向其添加数字。所以它将两个参数都转换为数字。 A 不代表数字,所以它被转换为 0。请阅读 MySQL 的类型转换文档。
    【解决方案2】:

    提示:

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

    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

    【讨论】:

    • 我认为 + 0 是一种比 * 1 更常见的转换为 int 的方式
    • 如果值类似于'000000',这非常有用。
    【解决方案3】:

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

    USE database_name;
    UPDATE `table_name` SET `field` = TRIM(LEADING '0' FROM `field`) WHERE `field` LIKE '0%';
    

    【讨论】:

      【解决方案4】:

      我相信你最好这样做:

      SELECT TRIM(LEADING '0' FROM myField)
      

      【讨论】:

        【解决方案5】:

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

        SELECT * FROM my_table WHERE TRIM(LEADING '0' FROM accountid ) = '00322994' 
        

        【讨论】:

        • 太棒了!你节省了我的时间!
        【解决方案6】:

        简直完美:

        SELECT TRIM(LEADING '0' FROM myfield) FROM table
        

        【讨论】:

          【解决方案7】:

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

          【讨论】:

            【解决方案8】:
            SELECT TRIM(LEADING '0' FROM *columnName*) FROM *tableName* ;
            

            这也可以正常工作

            【讨论】:

              猜你喜欢
              • 2018-07-08
              • 2011-02-17
              • 1970-01-01
              • 2021-04-16
              • 1970-01-01
              • 2013-03-31
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多