2017-01-06 78 views
0

我有兩個用例。喜歡mysql中布爾列的條件

  1. 對於我表中的所有列,我允許用戶搜索包含。我的查詢將是

Select * from table where column like "%value%";

當談到布爾列,如果他們正在尋找噸/ TR/TRU /真的,我應該顯示與

Select * from table where column is true;

結果目前我正在使用正則表達式檢查輸入的字符串,並對查詢進行硬編碼。有沒有更好的方法來實現這一目標?

  • 當用戶查詢等於和一串包含特殊字符

    Select * from table where column = "string with backslash escaped";

  • 此查詢不工作,但如果我使用而不是=它的工作原理。 但是就像不適用於布爾列。

    回答

    1

    您可以使用這樣的事情來匹配一個布爾表達式:

    SELECT * 
        FROM my_table 
    WHERE IF(boolean_column, 'true', 'false') LIKE '%tr%'; 
    
    0

    Like子句只能用於文本類型的數據(即VARCHARCHAR等)。你的邏輯應該更多的是找出正在搜索的列名,並根據那個定義要使用的運算符。

    如果您可以選擇使用視圖來替代此表格,那麼您可以在此表格上創建視圖並將Boolean列轉換爲基於文本的列,以便您可以像搜索其他列一樣搜索該列。