簡體   English   中英

帶有動態參數的 SQL 查詢

[英]SQL query with dynamic parameters

我試圖從數據庫中獲取一些數據。 我需要從我的表中獲取帳戶信息 - 這種類型的信息將取決於用戶。 如果他/她將插入帳戶類型= 1 -> 他將獲得此信息。 如果查詢取決於用戶,我如何創建查詢:例如,用戶可以選擇一種或多種帳戶類型以及如何顯示我的查詢? 現在我有類似的東西:

SELECT accountID, accountName,AccountNo,accountType from account_ref
where accountType not in (4, 9) and accountType IN (1, 2, 3)

但是帳戶類型可以是一種也可以不是。

編輯:Okey,如果我嘗試從我的程序(它是 c#)設置這個屬性在這種情況下我創建了方法:輸入參數 - 它是 AccountType 列表(哪個用戶打開)我怎么能動態設置它

        public async Task<IList<AccountInfo>> GetAccountByAccountType(IList<AccountType> item)
        {
            //item

            string query = $"SELECT accountID, accountName, AccountNo, accountType from account_ref " +
                            "where accountType not in (4, 9) and accountType IN(1, 2, 3)";

            var accType = await Connection.QueryAsync<AccountInfo>(query);

            return accType.ToList();
        }

您可以將 IN 與逗號分隔值一起使用

DECLARE @ids NVARCHAR(100) ='1,2,3'    
SELECT accountID, accountName,AccountNo,accountType 
FROM account_ref
WHERE accountType NOT IN (4, 9) 
AND accountType IN (SELECT value from STRING_SPLIT (@ids, ',')) 

根據您的評論,創建一個臨時表 @AccountType 或臨時變量,然后將動態傳遞的值存儲在其中,然后像這樣使用它。

INSERT INTO @AccountType
SELECT Value FROM dbo.FncSplitArrayIntoTable(@accountTypeParameter, ',')

SELECT accountID, accountName, AccountNo, accountType 
FROM account_ref
WHERE accountType IN (SELECT accountType FROM @AccountType)

FncSplitArrayIntoTable :實現自定義函數以使用逗號分隔值拆分動態傳遞的參數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM