SQL에서 같은 줄에 정수 변수와 문자열 인쇄


81

Ok 그래서 Technet에서 이것에 대한 답을 검색했지만 아무 소용이 없습니다.

두 개의 String 변수와 연결된 정수 변수를 인쇄하고 싶습니다.

이것은 실행되지 않는 내 코드입니다.

print 'There are ' + @Number + ' alias combinations did not match a record'

이런 기본적인 기능인 것 같아서 T-SQL에서는 불가능하다고 상상할 수 없었습니다. 하지만 가능하지 않다면 그렇게 말 해주세요. 정답을 찾을 수없는 것 같습니다.


2
print 'There are ' + CAST(@Number AS NVARCHAR(100)) + ' alias combinations did not match a record'
potashin

답변:


133
declare @x INT = 1 /* Declares an integer variable named "x" with the value of 1 */
    
PRINT 'There are ' + CAST(@x AS VARCHAR) + ' alias combinations did not match a record' /* Prints a string concatenated with x casted as a varchar */

나는 캐스트 방법을 좋아합니다. 짧고 달콤하며 원래 변수를 int로 유지합니다.

하, 당장 받아 들였을 텐데 6 분 더 못 했어요.

8

숫자는 문자열 보다 우선 순위 으므로 +연산자는 추가하기 전에 문자열을 숫자로 변환하려고합니다.

다음과 같이 할 수 있습니다.

print 'There are ' + CONVERT(varchar(10),@Number) +
      ' alias combinations did not match a record'

또는 (다소 제한적인) 형식 지정 기능을 사용하십시오 RAISERROR.

RAISERROR('There are %i alias combinations did not match a record',10,1,@Number)
WITH NOWAIT

배경 정보에 감사드립니다. 나는 T-SQL이 간단한 print 서술문을 할 때 우선 순위를 너무 많이 생각한다는 것을 깨닫지 못했습니다.

1
@AdamJ-그것은 print진술 과 관련이 없습니다 . T-SQL은 매우 간단하고 구식 언어입니다. T-SQL에서 연산자에 대한 모든 입력은 동일한 유형이어야합니다.
Damien_The_Unbeliever

감사! SQL이 70 년대에 만들어 졌다는 사실을 가끔 잊어 버리는 것 같습니다. SQL Server는 (제 생각에는) 상당히 세련된 모양을 가지고있어 실제보다 현대적으로 보입니다.

3

문자열과 숫자 문자열을 결합 할 수 없습니다. CONVERT 또는 CAST를 사용하여 숫자를 문자열로 변환해야합니다.

예를 들면 :

print 'There are ' + cast(@Number as varchar) + ' alias combinations did not match a record'

또는

print 'There are ' + convert(varchar,@Number) + ' alias combinations did not match a record'

2

인쇄 할 정수 및 10 진수 값을 설정하고 초기 값 을 설정했는지 다시 확인하십시오 .

이 샘플은 빈 줄을 인쇄합니다.

declare @Number INT
print 'The number is : ' + CONVERT(VARCHAR, @Number)

이 샘플은 인쇄 중입니다.-> 숫자는 다음과 같습니다. 1

declare @Number INT = 1
print 'The number is : ' + CONVERT(VARCHAR, @Number)

1

이것을 시도해 볼 수 있습니다.

declare @Number INT = 5                            
print 'There are ' + CONVERT(VARCHAR, @Number) + ' alias combinations did not match a record'
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.