[問題] SQL一個欄位裡面找複數目標

作者: MAGICXX (逢甲阿法)   2018-06-01 09:12:22
版友日安
我現在要利用PYQT下去資料庫裡面撈資料
遇到一個問題
我現在的query大概是這樣下去處理
cmd="SELECT * FROM resdb WHERE 水庫名稱 IN ('{0}')"
.format(
str(self.res_name.text())
)
我給使用者一個textbox輸入他要找的水庫名稱
可是這樣會發生一個問題
如果只有輸入一個的話 他是可以正常用的
整個cmd會變成
SELECT * FROM resdb WHERE 水庫名稱 in ('石門水庫,西勢水庫')
這樣下去的話 會找不到欄位裡面有「石門水庫,西勢水庫」這筆資料
因為我的欄位裡面 石門水庫跟西勢水庫是分開的
請問一下 我該怎麼處理 讓他在SQL裡面可以找複數的目標呢?
感謝!
作者: kobe8112 (小B)   2018-06-01 09:29:00
你需要限定使用者輸入的格式,拆開後再合併到SQL查詢吧where 水庫名稱 in ('石門水庫','西勢水庫')
作者: aszx4510 (wind)   2018-06-01 09:41:00
你為什麼要把使用者的輸入"直接"放到SQL指令中呢~
作者: MOONY135 (談無慾)   2018-06-01 10:42:00
我覺得這是SQL問題你沒有限定輸入格式的話 是不可能的https://goo.gl/wjKctn
作者: kobe8112 (小B)   2018-06-01 10:50:00
很多方式,就算用最最簡單的字串串接也可以呀例如將輸入格式化成list,完整查詢指令的字串用prefix + list通通取出來 + postfix

Links booklink

Contact Us: admin [ a t ] ucptt.com