如何在不影响 10+ 的情况下为小于 10 的数字放置前导零?

Sna*_*bby 7 sql-server sql-server-2008-r2 number-formatting

可能是一个新手问题,但是......

我有一个包含数字 1 到 300 的 VARCHAR 字段的表。我需要在任何小于 10 的数字前面放置一个前导零,同时保留原始数字,如果它是 10 或更大(即 1=01、10=10 和300=300)。

SELECT DISTINCT RIGHT('0'+CONVERT(VARCHAR,[FacilityCode]),3) FROM...
Run Code Online (Sandbox Code Playgroud)

这将返回 1=01、10=010 和 300=300(使用与上面相同的示例)

编辑:我试图在查询中执行此操作,以便我可以在不更改任一表的情况下进行查找。

有人可以在这里向兄弟伸出援手吗?我的大脑就是不工作。

JNK*_*JNK 12

最安全的方法可能是仅在列的长度为 1 个字符时添加零:

UPDATE
   Table
SET
   MyCol = '0' + MyCol
WHERE
   LEN(MyCol) = 1;
Run Code Online (Sandbox Code Playgroud)

这将涵盖 10 以下的所有数字,并忽略任何已经有前导 0 的数字。

编辑

要仅选择数据,请尝试:

SELECT
   MyColPadded = CASE WHEN LEN(MyCol) = 1 THEN '0' + MyCol ELSE MyCol END
FROM
   MyTable;
Run Code Online (Sandbox Code Playgroud)