我有两个用例。
Select * from table where column like "%value%";
当谈到布尔列时,如果他们正在搜索t / tr / tru / true,我应该用
显示结果 Select * from table where column is true;
目前,我正在使用正则表达式检查输入的字符串并对查询进行硬编码。有没有更好的方法来实现这一目标?
当用户查询等于和字符串包含特殊字符
时 Select * from table where column = "string with backslash escaped";
此查询不起作用,但如果我使用喜欢而不是 = ,则可以使用。 但是对于布尔列不起作用。
答案 0 :(得分:1)
你可以使用这样的东西来匹配一个布尔表达式:
SELECT *
FROM my_table
WHERE IF(boolean_column, 'true', 'false') LIKE '%tr%';
答案 1 :(得分:0)
Like
子句只能用于文本类型的数据(即VARCHAR
,CHAR
等)。您的逻辑应该更多地发现要搜索的列名称,并根据该名称定义要使用的运算符。
如果您可以选择使用视图代替此表,则可以在此表上创建一个视图,并将Boolean
列转换为基于文本的列,以便您像所有其他列一样搜索该列。 / p>