Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

मापदंडों की सूची के अनुसार SQL क्वेरी फ़िल्टरिंग

SQL Server 2008 या बाद के संस्करण को SQL सर्वर में मानकर, एक बार तालिका प्रकार बनाएँ:

CREATE TYPE dbo.ColumnBValues AS TABLE
(
  ColumnB INT
);

फिर एक संग्रहित प्रक्रिया जो इनपुट के रूप में इस तरह के प्रकार लेती है:

CREATE PROCEDURE dbo.whatever
  @ColumnBValues dbo.ColumnBValues READONLY
AS
BEGIN
  SET NOCOUNT ON;

  SELECT A.* FROM dbo.TableA AS A
    INNER JOIN @ColumnBValues AS c
    ON A.ColumnB = c.ColumnB;
END
GO

अब सी # में, डेटाटेबल बनाएं और इसे संग्रहीत प्रक्रिया के पैरामीटर के रूप में पास करें:

DataTable cbv = new DataTable();
cbv.Columns.Add(new DataColumn("ColumnB"));

// in a loop from a collection, presumably:
cbv.Rows.Add(someThing.someValue);

using (connectionObject)
{
    SqlCommand cmd        = new SqlCommand("dbo.whatever", connectionObject);
    cmd.CommandType       = CommandType.StoredProcedure;
    SqlParameter cbvParam = cmd.Parameters.AddWithValue("@ColumnBValues", cbv);
    cbvParam.SqlDbType    = SqlDbType.Structured;
    //cmd.Execute...;
}

(हो सकता है कि आप इस प्रकार को और अधिक सामान्य बनाना चाहें, मैंने इसे विशेष रूप से यह स्पष्ट करने के लिए नाम दिया है कि यह क्या कर रहा है।)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. बाधाओं को अस्थायी रूप से बंद करें (MS SQL)

  2. SQL सर्वर:स्प्लिट ऑपरेशन

  3. यदि पैरामीटर शून्य है तो SQL सभी का चयन करें अन्यथा विशिष्ट आइटम लौटाएं

  4. रिकर्सिव क्वेरी जहां एंकर और सदस्य के पास यूनियन हैं

  5. क्या ये दो प्रश्न समान हैं - GROUP BY बनाम DISTINCT?