【问题标题】:Prepend 0s to string (to specific length) [duplicate]在字符串前面添加 0(到特定长度)[重复]
【发布时间】:2023-03-26 16:37:01
【问题描述】:

我有一个查询,我从数据库中提取支票号码。返回值必须始终为 9 个字符。大多数支票号码只有 6 个字符,所以我想在字符串前面加上 0 以确保它始终是 9 个字符。由于校验码的长度可能不同,因此每个校验码的 0 数量会有所不同。最有效的方法是什么?

【问题讨论】:

  • 你用的是什么数据库?

标签: sql string loops prepend string-length


【解决方案1】:

如果它们总是在 6 到 9 位之间,最简单(可能也是最好)的方法是使用 CASE。

SELECT CASE WHEN LEN(CHECK_NUM)= 6 THEN '000' WHEN LEN(CHECK_NUM) = 7 THEN '00' 
       WHEN 
       LEN(CHECK_NUM) = 8 THEN '0' ELSE '' END + CHECK_NUM 
FROM   TABLE 

编辑
如果原始值是数字 (int),请尝试以下操作:

SELECT CASE WHEN LEN(CHECK_NUM)= 6 THEN '000' WHEN LEN(CHECK_NUM) = 7 THEN '00' 
       WHEN 
       LEN(CHECK_NUM) = 8 THEN '0' ELSE '' END + CAST(CHECK_NUM AS VARCHAR(9)) 
FROM   TABLE1 

看看这个SQL Fiddle

【讨论】:

  • 感谢您的建议-我已经尝试过了,但是,它似乎实际上并没有在开头添加零:当 LEN(cr.CHECK_NUM_NUMERIC) = 6 then '000 时选择 case ' 当 LEN(cr.CHECK_NUM_NUMERIC) = 7 然后 '00' 当 LEN(cr.CHECK_NUM_NUMERIC) = 8 然后 '0' else '' end + cr.CHECK_NUM_NUMERIC from chk_reconciliation cr
  • 该字段是 int 还是 varchar?
猜你喜欢
  • 2020-11-15
  • 2018-07-27
  • 1970-01-01
  • 2011-03-24
  • 1970-01-01
  • 2019-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多