Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Làm cách nào để cung cấp một chuỗi với danh sách các giá trị cho một câu lệnh IN

Bắt đầu.

Bạn không cần phải tạo một bảng thực tế. Bạn có thể sử dụng Hàm có giá trị bảng và sử dụng hàm đó trong truy vấn của mình, ví dụ:như bên dưới.

(DATEPART(dw, ThisDate) IN (SELECT [item] FROM dbo.fnSplit(@TheseDays, ',')))

Điều này sử dụng TVF từ http://www.eggheadcafe.com/ cộng đồng / aspnet / 13/10021854 / fnsplit.aspx ).

CREATE FUNCTION dbo.fnSplit(
    @sInputList VARCHAR(8000) -- List of delimited items
  , @sDelimiter VARCHAR(8000) = ',' -- delimiter that separates items
) RETURNS @List TABLE (item VARCHAR(8000))

BEGIN
DECLARE @sItem VARCHAR(8000)
WHILE CHARINDEX(@sDelimiter,@sInputList,0) <> 0
 BEGIN
 SELECT
  @sItem=RTRIM(LTRIM(SUBSTRING(@sInputList,1,CHARINDEX(@sDelimiter,@sInputList,0)-1))),
  @sInputList=RTRIM(LTRIM(SUBSTRING(@sInputList,CHARINDEX(@sDelimiter,@sInputList,0)+LEN(@sDelimiter),LEN(@sInputList))))

 IF LEN(@sItem) > 0
  INSERT INTO @List SELECT @sItem
 END

IF LEN(@sInputList) > 0
 INSERT INTO @List SELECT @sInputList -- Put the last item in
RETURN
END
GO



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server - Tổng tích lũy đặt lại khi gặp phải 0

  2. Hồ sơ máy chủ SQL không hiển thị các truy vấn LINQ Tới Sql

  3. Giá trị tham số mặc định / tham số tùy chọn cho các thủ tục được lưu trữ .NET trong SQL Server 2005

  4. Sự cố dòng mới khi sao chép dữ liệu từ SQL Server 2012 sang Excel

  5. Sử dụng SQL Server Profiler | Khắc phục sự cố hiệu suất máy chủ SQL -5