如何将数字00
表示为字符串:
user.id
在0到9范围内,则 # => "00#{user.id}"
填充到左侧
0
user.id
的范围是10到99 ,则 # => "0#{user.id}"
填充
# => "#{user.id}"
否则没有填充
user.id = 1
例如,拥有"001"
,产生user.id = 11
,产生"011"
,产生user.id = 111
,产生"111"
,产生DECLARE @DB_NAME VARCHAR(50)
SET @DB_NAME='CC_GET'
DECLARE @CMD_BUSID VARCHAR(300)
SET @CMD_BUSID='(SELECT DISTINCT A.BUSID FROM LTBAUDITTYPE A WHERE BUSINESS IN ( SELECT DISTINCT CONTACT_BUSINESS FROM '+@DB_NAME+'.DBO.LTBCONTACT))'
--DECLARE @BUS_ID TABLE(BUS INT)
--INSERT INTO @BUS_ID
--DROP TABLE #BUS_ID
CREATE TABLE #BUS_ID( BUS INT)
INSERT INTO #BUS_ID
EXEC(@CMD_BUSID)
--SELECT * FROM #BUS_ID
DECLARE @CMD_BUSNAME VARCHAR(300)
SET @CMD_BUSNAME='(SELECT DISTINCT A.BUSINESS FROM LTBAUDITTYPE A WHERE BUSINESS IN ( SELECT DISTINCT CONTACT_BUSINESS FROM '+@DB_NAME+'.DBO.LTBCONTACT))'
--DECLARE @BUS_NAME TABLE(BUS1 NVARCHAR(50))
--INSERT INTO @BUS_NAME
--DROP TABLE #BUS_NAME
CREATE TABLE #BUS_NAME(BUS1 VARCHAR(50))
INSERT INTO #BUS_NAME
EXEC(@CMD_BUSNAME)
--SELECT * FROM #BUS_NAME
declare @cmd_ltbEnvPriority varchar(500)
set @cmd_ltbEnvPriority='insert into #Track_info(BusID,BusName,CC_DBName,Table_Name,[ID missed in GEEHS])
(
select (select bus from #BUS_ID ) BusID,(select bus1 from #BUS_NAME) BusName,
@db_name CC_DBName,''ltbEnvPriority'' Table_Name,a.words [ID missed in GEEHS]
from '+@DB_NAME+'.dbo.ltbEnvPriority a where not exists (select 1 from ltbEnvPriority b where a.words=b.words))'
--print @cmd_ltbEnvPriority
EXEC (@cmd_ltbEnvPriority)
{1}}。
答案 0 :(得分:33)
puts 1.to_s.rjust(3, "0")
#=> 001
puts 10.to_s.rjust(3, "0")
#=> 010
puts 100.to_s.rjust(3, "0")
#=> 100
上面的代码会将你的user.id转换为字符串,然后String.rjust()方法会考虑它的长度和前缀适当的零数。
答案 1 :(得分:21)
您最好使用字符串格式。
"%03d" % 1 #=> "001"
"%03d" % 10 #=> "010"
"%03d" % 100 #=> "100"
"%03d" % user.id # => what you want
答案 2 :(得分:1)
您可以尝试使用字符串"'%03d' % #{user.id}"
答案 3 :(得分:1)
user.id
#⇒ 5
user.id.to_s.rjust(3, '0')
#⇒ "005"
答案 4 :(得分:1)
Kernel#format
或 Kernel#sprintf
:
format('%03d', user.id)
# or
sprintf('%03d', user.id)
作为旁注,由于 Kernel#format
运算符的歧义(例如在代码没有明确说明这是整数模还是字符串格式)。此外,Kernel#sprintf
将数组作为参数,这可能涉及分配一个新对象,这可能会带来(可能微不足道,但存在)性能损失。