2010-01-15 40 views
5

Bản sao có thể xảy ra:
Parameterizing a SQL IN clause?
SQL Server SP - Pass parameter for “IN” array list?SQL có loại danh sách có thể được sử dụng trong mệnh đề WHERE ... IN không?

Tôi cần phải tìm kiếm một tập lộn xộn của các số nguyên trên hai bảng khác nhau:

SELECT 
    col_1, col_2 
FROM 
    LIKES_NUMBERS 
WHERE 
    col_1 IN (1,2,3,5,7,1021,10041411) 

SELECT 
    col_one, col_two 
FROM 
    LIKES_NAMES 
WHERE 
    col_one IN (1,2,3,5,7,1021,10041411) 

Có một loại danh sách SQL có thể được chuyển đến IN để tôi không lặp lại bản thân mình? VÍ DỤ.

DECLARE @stuff UNOBTAINIUM(1,2,3,5,7,1021,10041411) 
-- ... 
WHERE col_1 IN (@stuff) 
-- ... 
WHERE col_one IN (@stuff) 

Tạo bảng tạm thời, nhưng điều đó có vẻ tàn bạo.

+0

Trùng lặp: http://stackoverflow.com/questions/537087/sql-server-sp-pass-parameter-for-in-array-list –

Trả lời

2

Có, bạn có thể sử dụng số table variable cho việc này. Nó giống như một bảng tạm thời, nhưng có phạm vi cục bộ.

1

Không có loại danh sách. Bảng tạm thời phải ổn hoặc bạn có thể sử dụng biến bảng.

1

Khi sử dụng MS-SQL, tôi có xu hướng sử dụng tài liệu XML cho mục đích này, có thể dễ dàng truyền từ không -Khách hàng SQL (không giống như các bảng tạm thời, tôi tin) và được truy vấn bằng cú pháp T-SQL của MS-SQL.

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