SQL Server串联varchar和int

时间:2013-07-26 22:45:14

标签: sql sql-server

我有两个变量:

一个是varchar,一个是int,我不知道如何使用强制转换来编写一个while循环,以便它显示以下内容:例如,如果while循环是5,那么结果应该是 仪表1 仪表2 仪表3 仪表4 仪表5。

我有这个代码,但是它没有运行(无法将varchar转换为int),即使我进行转换它也不起作用。

DECLARE @Name varchar (20) = 'Meter',
        @MeterNumber int = 1

WHILE (@MeterNumber < 5)
BEGIN
PRINT @Name + ' ' + @MeterNumber
SET  @MeterNumber = @MeterNumber + 1
END

2 个答案:

答案 0 :(得分:14)

这应该可以解决这个问题:在打印时将MeterNumber转换为varchar。

DECLARE @Name varchar (20) = 'Meter',
        @MeterNumber int = 1

WHILE (@MeterNumber <= 5)
BEGIN
PRINT @Name + ' ' + cast(@MeterNumber as varchar(20))
SET  @MeterNumber = @MeterNumber + 1
END

编辑:

  

例如,我想声明一个存储每个变量的第三个变量   迭代。仪表1,仪表2 ......但我不知道放在哪里!

DECLARE @Name varchar (20) = 'Meter',
        @MeterNumber int = 1 ,
        @OutPut varchar(max) =''; -- this can get biiiig.

WHILE (@MeterNumber <= 5)
BEGIN
SET @Output = @Output + @Name + ' ' + cast(@MeterNumber as varchar(20)) + ','
PRINT LEFT(@Output, len(@Output) - 1)
SET  @MeterNumber = @MeterNumber + 1
END

答案 1 :(得分:3)

试试这个(没有LOOP) -

DECLARE
      @Name VARCHAR(20) = 'Meter'
    , @MeterNumber INT = 5
    , @OutPut VARCHAR(MAX) = ''

SELECT @OutPut = STUFF((
     SELECT CHAR(13) + @Name + ' ' + CAST(sv.number AS VARCHAR(5)) 
     FROM [master].dbo.spt_values sv
     WHERE sv.[type] = 'p'
     AND sv.number BETWEEN 1 AND @MeterNumber
     FOR XML PATH(''), TYPE).value('.', 'VARCHAR(MAX)'), 1, 1, '')

PRINT @OutPut