像mysql中的布尔列的条件

时间:2017-01-06 04:41:08

标签: mysql

我有两个用例。

  1. 对于我表中的所有列,我允许用户搜索包含。我的查询将是
  2. Select * from table where column like "%value%";

    当谈到布尔列时,如果他们正在搜索t / tr / tru / true,我应该用

    显示结果

    Select * from table where column is true;

    目前,我正在使用正则表达式检查输入的字符串并对查询进行硬编码。有没有更好的方法来实现这一目标?

    1. 当用户查询等于和字符串包含特殊字符

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

    2. 此查询不起作用,但如果我使用喜欢而不是 = ,则可以使用。 但是对于布尔列不起作用。

2 个答案:

答案 0 :(得分:1)

你可以使用这样的东西来匹配一个布尔表达式:

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

答案 1 :(得分:0)

Like子句只能用于文本类型的数据(即VARCHARCHAR等)。您的逻辑应该更多地发现要搜索的列名称,并根据该名称定义要使用的运算符。

如果您可以选择使用视图代替此表,则可以在此表上创建一个视图,并将Boolean列转换为基于文本的列,以便您像所有其他列一样搜索该列。 / p>