2013-07-26 3 views
7

int 형 : 나는 그것을 보여줄 수 있도록 캐스팅을 사용하여 while 루프를 작성하는 방법을 잘 모르겠습니다,SQL 서버 연결의 VARCHAR 나는 두 변수가

하나는 VARCHAR이고 다른 하나는 int이며 다음 예제 경우에 대한 루프 5 동안 결과는 미터 1 미터이어야 2 미터 3 미터 4 미터 5.

이 코드를 가지고 있지만 내가 때에도 (int로 VARCHAR 변환 불가) 실행되지 캐스팅이 작동하지 않습니다.

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

WHILE (@MeterNumber < 5) 
BEGIN 
PRINT @Name + ' ' + @MeterNumber 
SET @MeterNumber = @MeterNumber + 1 
END 
+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 
+0

그것을 인쇄이 포함 된 VARCHAR에 @MeterNumber을 변환 할 필요가 어떻게에 결과를 저장하려면 변수마다? –

+0

그 결과는 무엇입니까? 인쇄? –

+0

예를 들어, 각 반복을 저장할 세 번째 변수를 선언하고 싶습니다. 측정기 1, 측정기 2 ... 그러나 그것을 배치 할 위치를 모르겠습니다! –

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