我在MySQL中有一个表,我需要从app获取。如果数据不包含'null'值,它可以正常工作,但如果数据包含空值,我无法搜索它。
@app.route('/ABC/search1', methods=['GET'])
def ABCsearch1():
name = request.args.get('name',default='',type=str)
priceMin = request.args.get('priceMin',default='',type=str)
priceMax = request.args.get('priceMax',default='',type=str)
limit = request.args.get('limit',default=0,type=int)
offSet = request.args.get('offSet',default=0,type=int)
query = """ SELECT * FROM KLSE WHERE (Stock LIKE :s0 or Name LIKE :s1 or Number LIKE :s2)
AND (Price BETWEEN (IF(:s3='_',-5000,:s4)) AND (IF(:s5='_',5000,:s6)))
LIMIT :s95 OFFSET :s96 """
query = text(query)
input = {'s0':name+"%",'s1':name+"%",'s2':name+"%",'s3':priceMin,'s4':priceMin,'s5':priceMax,'s6':priceMax,
's95':limit,'s96':offSet}
try:
call = db.session.execute(query,input)
f = call.fetchall()
col = ['index','Stock','Name','Number','Price','id']
f1 = [OrderedDict(zip(col,t)) for t in f]
except Exception:
return 'Error'
return jsonify({'Stock': f1})
例如,如果股票'XYZ'的价格为3,'XYZZ'的价格为3.4,'XYZA'的价格为数据库中的空。当我在名称中搜索'XY'时,它只会显示'XYZ'和'XYZZ'。 'XYZA'不会显示为null。
我需要与'XY'匹配的任何东西,即使价格为空,我希望它显示出来。
答案 0 :(得分:0)
NULL
not a value它是缺少值,因此您无法对其进行比较。将OR Price is NULL
添加到where子句中。如果要提供默认值,可以将IFNULL(Price, '$0.00')
添加到选择器字符串。