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

看板Python作者 (逢甲阿法)時間6年前 (2018/06/01 09:12), 6年前編輯推噓0(009)
留言9則, 3人參與, 6年前最新討論串1/1
版友日安 我現在要利用PYQT下去資料庫裡面撈資料 遇到一個問題 我現在的query大概是這樣下去處理 cmd="SELECT * FROM resdb WHERE 水庫名稱 IN ('{0}')" .format( str(self.res_name.text()) ) 我給使用者一個textbox輸入他要找的水庫名稱 可是這樣會發生一個問題 如果只有輸入一個的話 他是可以正常用的 整個cmd會變成 SELECT * FROM resdb WHERE 水庫名稱 in ('石門水庫,西勢水庫') 這樣下去的話 會找不到欄位裡面有「石門水庫,西勢水庫」這筆資料 因為我的欄位裡面 石門水庫跟西勢水庫是分開的 請問一下 我該怎麼處理 讓他在SQL裡面可以找複數的目標呢? 感謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.134.166.72 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1527815545.A.EE2.html

06/01 09:29, 6年前 , 1F
你需要限定使用者輸入的格式,拆開後再合併到SQL查詢吧
06/01 09:29, 1F

06/01 09:30, 6年前 , 2F
where 水庫名稱 in ('石門水庫','西勢水庫')
06/01 09:30, 2F

06/01 09:41, 6年前 , 3F
你為什麼要把使用者的輸入"直接"放到SQL指令中呢~
06/01 09:41, 3F
謝謝兩位大大 我有想過要在程式碼裡面處理 可是我實在不知道怎麼著手...冏 ※ 編輯: MAGICXX (140.134.166.72), 06/01/2018 09:55:11

06/01 10:42, 6年前 , 4F
我覺得這是SQL問題
06/01 10:42, 4F

06/01 10:45, 6年前 , 5F
你沒有限定輸入格式的話 是不可能的
06/01 10:45, 5F

06/01 10:45, 6年前 , 6F
06/01 10:45, 6F

06/01 10:50, 6年前 , 7F
很多方式,就算用最最簡單的字串串接也可以呀
06/01 10:50, 7F

06/01 10:51, 6年前 , 8F
例如將輸入格式化成list,完整查詢指令的字串用
06/01 10:51, 8F

06/01 10:52, 6年前 , 9F
prefix + list通通取出來 + postfix
06/01 10:52, 9F
文章代碼(AID): #1R49rvxY (Python)