【问题标题】:Trim leading 0 for length greater than x in a dataset修剪数据集中长度大于 x 的前导 0
【发布时间】:2018-09-28 17:47:41
【问题描述】:

以这张表为例

表 1:

Name.  ID
David 00513
George 0523
Carmen 3216

在此表中,我只想为 David 修剪前导 0,因为他的 ID 大于 4 位。我不想为 George 修剪前导 0 在 SQL 中执行此操作的最佳方法是什么?

【问题讨论】:

  • MySQL 还是 SQLite ?两者都是不同的关系型数据库
  • 正在寻找解决方案。修复了到 sqlite 的帖子,因为它可能会导致混乱

标签: sql sqlite dataset querying


【解决方案1】:

最简单的方法就是:

select right(id, 4)

如果您担心 id 长度超过 4 个字符但初始字符不为零:

select (case when length(id) > 4 
             then replace(ltrim(replace(id, '0', ' ')), ' ', '0')
             else id
        end)

【讨论】:

    【解决方案2】:

    如果您不担心初始的非零值会被截断,那么

    select substr(ID,-4);
    

    应该可以。如果有可能有超过 4 位的非零首字母,则使用

     select printf('%04d', ID);
    

    (假设ID中的所有字符都是数字)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-06
      • 1970-01-01
      相关资源
      最近更新 更多