SQL 使用动态参数查询
SQL query with dynamic parameters
我试图从数据库中获取一些数据。我需要从我的 table 获取帐户信息 - 这种类型的信息将取决于用户。如果 he/she 将插入 帐户类型 = 1 -> 他将获得此信息。如果它取决于用户,我该如何创建查询:例如,用户可以选择一种或多种帐户类型,以及如何显示我的查询?
现在我有类似的东西:
SELECT accountID, accountName,AccountNo,accountType from account_ref
where accountType not in (4, 9) and accountType IN (1, 2, 3)
但账户类型可以是一种也可以不是。
已编辑:
好的,如果我尝试从我的程序中设置这个 属性(它是 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, ','))
根据您的意见,创建一个临时 table @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 : 实现自定义函数来拆分动态传递的参数
具有 comma-separated 个值。
我试图从数据库中获取一些数据。我需要从我的 table 获取帐户信息 - 这种类型的信息将取决于用户。如果 he/she 将插入 帐户类型 = 1 -> 他将获得此信息。如果它取决于用户,我该如何创建查询:例如,用户可以选择一种或多种帐户类型,以及如何显示我的查询? 现在我有类似的东西:
SELECT accountID, accountName,AccountNo,accountType from account_ref
where accountType not in (4, 9) and accountType IN (1, 2, 3)
但账户类型可以是一种也可以不是。
已编辑: 好的,如果我尝试从我的程序中设置这个 属性(它是 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, ','))
根据您的意见,创建一个临时 table @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 : 实现自定义函数来拆分动态传递的参数 具有 comma-separated 个值。