2017-08-29 43 views
0

假設我有逗號分隔值的一個長長的清單中:總結列表中的元素,在其中

one, two, three, .., hundred 

,我需要在一個WHERE IN像這樣使用它們:

SELECT * FROM tags WHERE IN (one, two, three, .., hundred) 

那麼有沒有什麼辦法可以「告訴」MySQL將每個值包含在引號中,或者至少可以將每個值都視爲字符串?如果不用引號括住這些值,那麼WHERE IN不起作用。

注意:當然有很多方法可以事先修改值列表,然後將其傳遞給查詢,但是我想知道是否有MySQL方法可以實現相同的效果。

+2

不存在是不是所有的查詢。你必須在mysql – Jens

+0

之外完成。如Lalabhai Patel所述,可以使用'FIND_IN_SET'作爲替代方案。 – lesssugar

回答

1

使用此查詢

SELECT * FROM tags WHERE FIND_IN_SET(field_name,'one, two, three, hundred') 
+0

答案不在'WHERE IN'的背景下,但是可能需要一個開箱即用的帖子。 – lesssugar

1

這是不可能的,一個簡單的SQL查詢,但是,你可以做這樣的事情:

  • 創建用戶定義的函數,通過分割字符串逗號(如this SO解答中所述)並將每個令牌包裝成雙引號
  • 使用CONCAT括號並存儲結果字符串int o一個變量(使用SET
  • IN查詢中使用上述變量的值(例如, WHERE value IN @val
  • 執行批處理或過程