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)