【发布时间】:2023-03-26 16:37:01
【问题描述】:
我有一个查询,我从数据库中提取支票号码。返回值必须始终为 9 个字符。大多数支票号码只有 6 个字符,所以我想在字符串前面加上 0 以确保它始终是 9 个字符。由于校验码的长度可能不同,因此每个校验码的 0 数量会有所不同。最有效的方法是什么?
【问题讨论】:
-
你用的是什么数据库?
标签: sql string loops prepend string-length
我有一个查询,我从数据库中提取支票号码。返回值必须始终为 9 个字符。大多数支票号码只有 6 个字符,所以我想在字符串前面加上 0 以确保它始终是 9 个字符。由于校验码的长度可能不同,因此每个校验码的 0 数量会有所不同。最有效的方法是什么?
【问题讨论】:
标签: sql string loops prepend string-length
如果它们总是在 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。
【讨论】: