我有一个具有多列的客户表,其中一列是状态。
我想要一个动态查询:当我的
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)
这样的东西适用于您有限的场景:
select *
from Tbl
where (:stateInput = '' or charindex(','+ ste +',', ','+ :stateInput +',')>0)