如何使用SQL查询动态字符串列表?

问题描述 投票:0回答:1

我有一个具有多列的客户表,其中一列是状态。

我想要一个动态查询:当我的

stateInput
为空时,我想要所有客户,如果不是,我想要具有我的
stateInput
中给出的状态的客户。

stateInput
是我从 fastapi 请求参数收到的动态值

stateInput = request.query_params['stateInput ']
就像这样。

stateInput
可能是
'' or 'NY,CA' or 'NY' or 'NY,CA,BAL'

如何为此动态编写 sql 查询?

尝试了以下方法,但这些方法出现错误/不起作用:

问题1:

select * 
from Customers 
where (:stateInput = '' or state in (:stateInput))

问题2:

stateInputList = request.query_params['stateInput '].split(',')

select * 
from Customers 
where (:stateInput = '' or state in (:stateInputList))

问题3:

stateInputTuple = tuple(request.query_params['stateInput'].split(','))

select * 
from Customers 
where (:stateInput = '' or state in (:stateInputTuple))

查询 4(给出 FIND_IN_SET 不是可识别的内置函数名称):

select * 
from Customers 
where FIND_IN_SET(state, :stateInput)
sql sql-server dynamic-sql sql-server-2022
1个回答
0
投票

这样的东西适用于您有限的场景:

select * 
from Tbl
where (:stateInput = '' or charindex(','+ ste +',', ','+ :stateInput +',')>0)
© www.soinside.com 2019 - 2024. All rights reserved.