在字符串前面添加 0(到特定长度)[重复]

Posted

技术标签:

【中文标题】在字符串前面添加 0(到特定长度)[重复]【英文标题】:Prepend 0s to string (to specific length) [duplicate] 【发布时间】:2013-09-04 13:46:27 【问题描述】:

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

【问题讨论】:

你用的是什么数据库? 【参考方案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?

以上是关于在字符串前面添加 0(到特定长度)[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在前面添加零以满足字符串数 5 [重复]

仅当字符串 > 特定长度时,才将字符添加到字符串的特定位置

如何最好地将 0 添加到 range.value 的开头,直到它在 Excel 中的长度为 13 个字符? [复制]

正则表达式---重复

在 GIT 中查找添加了特定字符串的提交 [重复]

字符串中怎么截取指定字符的前面的字符和后面的字符