Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Bagaimana cara memberikan string dengan daftar nilai ke pernyataan IN?

Gan.

Anda tidak harus membuat tabel yang sebenarnya. Anda dapat menggunakan Fungsi Bernilai Tabel dan menggunakannya dalam kueri Anda, mis. seperti di bawah ini.

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

Ini menggunakan TVF dari http://www.eggheadcafe.com/ community/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 2008 :Tidak Dapat Menyisipkan kolom baru di posisi tengah dan mengubah tipe data

  2. Bagaimana saya bisa memanggil Prosedur Tersimpan SQL menggunakan EntityFramework 7 dan Asp.Net 5

  3. Apakah ada cara untuk mengubah nilai untuk FixedLenNullInSource dan TrimTrailingBlanks?

  4. Bersenang-senang dengan BULK INSERT SQL SERVER - ketik ketidakcocokan atau karakter yang tidak valid untuk halaman kode yang ditentukan

  5. Bagaimana cara menambahkan bidang datetime dengan bidang waktu