[英]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.