In biến số nguyên và chuỗi trên cùng một dòng trong SQL


81

Ok vì vậy tôi đã tìm kiếm câu trả lời cho điều này trên Technet, nhưng vô ích.

Tôi chỉ muốn in một biến số nguyên được nối với hai biến Chuỗi.

Đây là mã của tôi, không chạy:

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

Nó có vẻ như là một tính năng cơ bản, tôi không thể tưởng tượng rằng nó không có trong T-SQL. Nhưng nếu không thể, xin vui lòng nói như vậy. Tôi dường như không thể tìm ra câu trả lời thẳng thắn.


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

Câu trả lời:


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 */

Tôi thích Phương pháp truyền. Ngắn gọn và hấp dẫn, và giữ biến ban đầu dưới dạng int mà tôi cần.

Ha, tôi đã nhận nó ngay lập tức nhưng nó sẽ không cho tôi thêm 6 phút nữa.

8

Số có quyền ưu tiên cao hơn chuỗi nên dĩ nhiên các +nhà khai thác muốn chuyển chuỗi của bạn thành số trước khi thêm vào.

Bạn có thể làm:

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

hoặc sử dụng các phương tiện định dạng (khá hạn chế) của RAISERROR:

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

Cảm ơn bạn về thông tin cơ bản. Tôi không nhận ra rằng T-SQL được ưu tiên quá nhiều khi thực hiện các câu lệnh in đơn giản.

1
@AdamJ - không liên quan gì đến các printcâu lệnh, tùy ý. T-SQL là một ngôn ngữ rất đơn giản, khá cổ điển. Trong T-SQL, tất cả các đầu vào cho một toán tử phải cùng kiểu.
Damien_The_Un Believer

Cảm ơn! Tôi đoán đôi khi tôi quên rằng SQL đã được tạo ra vào những năm 70. SQL Server có giao diện khá đẹp (theo ý kiến ​​của tôi) mà tôi nghĩ làm cho nó có vẻ hiện đại hơn so với thực tế.

3

Bạn không thể kết hợp chuỗi ký tự và chuỗi số. Bạn cần chuyển đổi số thành chuỗi bằng CONVERT hoặc CAST.

Ví dụ:

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

hoặc là

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

2

Kiểm tra kỹ xem bạn đã đặt và giá trị ban đầu cho các giá trị int và thập phân được in chưa.

Mẫu này đang in một dòng trống

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

Và mẫu này đang in -> Số lượng là: 1

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

1

Bạn có thể thử cái này,

declare @Number INT = 5                            
print 'There are ' + CONVERT(VARCHAR, @Number) + ' alias combinations did not match a record'
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.