2009-01-15 50 views
14

Có thể xác định loại biến cục bộ khi chạy trong TSQL không?SQL Server 2005: Xác định kiểu dữ liệu của biến

Ví dụ, nói tôi muốn làm một cái gì đó dọc theo những dòng:

IF (@value IS INTEGER) 

Hoặc

IF (TYPEOF(@value) = <whatever>) 

Có ai biết cách nào để thực hiện điều này?

CHỈNH SỬA: Đây không phải là một nhiệm vụ cụ thể, đây là một câu hỏi chung về kiến ​​thức. Tôi đánh giá cao câu trả lời cho biết rằng loại nên được biết đến vì nó được khai báo trong cùng một lô, tôi tò mò muốn biết loại có thể được xác định trong thời gian chạy hay không.

Trả lời

27

chạy này

declare @d int 

select @d = 500 

if cast(sql_variant_property(@d,'BaseType') as varchar(20)) = 'int' 
print 'yes' 
else 
print 'no' 
+0

Lưu ý: Trong phiên bản SQL Server của tôi, tôi chỉ gặp lỗi khi chạy sql_variant_property() trên một biến thay vì một cột. –

-1

Tôi không nghĩ vậy - NHƯNG nó là một biến cục bộ để khai báo nó trong cùng một quy trình, do đó bạn sẽ biết kiểu anyways - hoặc tôi thiếu cái gì đó?

+0

Với cách tiếp cận @SQLMenace nêu ở trên, bạn có thể tìm hiểu các loại để đổi lấy một số chức năng built-in. Vui lòng xem [bài đăng] này (http://climenco.blogspot.com/2014/04/t-sql-coalesce-returns-int.html) để có ví dụ nhanh. –

Các vấn đề liên quan