【问题标题】:Add leading zeros to a varchar field [duplicate]将前导零添加到 varchar 字段 [重复]
【发布时间】:2015-12-04 17:12:46
【问题描述】:

我有一个字段是varchar(8),它保存了我从float 转换为varchar 的日期值。

有些记录有八个字符,有些记录有七个。我想通过将前导零添加到具有 7 的长度来使它们的长度相同。

  • 8 个字符示例:12162003

  • 7 字符示例:5072004(需要前导零)

查询:

select birthdate_new from table_name 

【问题讨论】:

  • 你会拥有 6 个吗? 1 月 1 日会是 112015 吗?
  • 在您的表格中添加一个日期列并将出生日期存储在该列中。
  • 同意丹。日期列是最好的。这些避免了问题:是 1112014 1/11/14 或 11/1/14。

标签: sql sql-server tsql


【解决方案1】:

一个适用于更多情况的函数是 REPLICATE。它将值 X 次数连接到一个字符串。

SELECT REPLICATE('0', 8-LEN(birthdate_new)) + birthdate_new AS 8_len_birthdate 

这将取您生日的长度,从 8 中减去它,然后在前面加上那么多前导 0,使其成为 8 个字符。

【讨论】:

  • 请在您的回答中添加有关lpad的信息
【解决方案2】:

你可以使用RIGHT:

SELECT RIGHT('00000000' + birthdate_new, 8) AS birthdate_new
FROM table_name;

LiveDemo

如果你想UPDATE字段使用:

UPDATE table_name
SET birthdate_new = RIGHT('00000000' + birthdate_new, 8)
WHERE LEN(birthdate_new) < 8;

【讨论】:

    【解决方案3】:

    一如既往地 7/8,您可以:

    select right('0' + fld, 8)
    

    select case when len(fld) = 7 then '0' else '' end + fld
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-21
      • 2014-03-04
      • 2011-02-03
      • 1970-01-01
      • 2020-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多