在SQLite中,使用带有AND / OR运算符的MATCH不起作用 [英] Using MATCH with AND/OR operators with parameters doesn't work in SQLite

查看:144
本文介绍了在SQLite中,使用带有AND / OR运算符的MATCH不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在执行select语句时遇到了问题,而在使用参数时使用了match和/或运算符。



该语句如下所示:

b
$ b

  SELECT ColumnName1,ColumnName2 
FROM TableName
WHERE TableName MATCH'ColumnName1:@param1 AND ColumnName2:@ param2';

但是,当我用实际值更改@ param1和@ param2时,例如像这样

  SELECT ColumnName1,ColumnName2 
FROM TableName
WHERE TableName MATCH'ColumnName1:Value AND ColumnName2:Value';

工作正常。



我猜问题在于我的AND语句的单引号。有没有什么方法可以避免它们,但仍然可以使用和/或运营商或在其他地方的问题? 你可以使用SQL参数来替换参数的一部分,但也许你可以使用字符串连接(我没有测试这个):

  ... MATCH'ColumnName1:'|| @ param1 || '和ColumnName2:'|| @参数2; 

否则,您必须遵循规范的方式,在您的应用程序中构建字符串并将其作为一个参数:

  ... MATCH @param; 


I'm having problem with executing select statement while using match and and/or operators while using parameters.

The statement looks like this:

SELECT ColumnName1, ColumnName2 
FROM TableName 
WHERE TableName MATCH 'ColumnName1:@param1 AND ColumnName2:@param2';

But when I change @param1 and @param2 with real values, for example like this

SELECT ColumnName1, ColumnName2 
FROM TableName 
WHERE TableName MATCH 'ColumnName1:Value AND ColumnName2:Value';

it works fine.

I guess the problem is those single quotes around my AND statement. Is there any way to avoid them but still be able to use and/or operators or is problem somewhere else?

解决方案

You can't use SQL parameters to replace parts of an argument, but perhaps you may be able to use string concatenation (I didn't test this):

... MATCH 'ColumnName1:' || @param1 || ' AND ColumnName2:' || @param2;

Else you'll have to go the canonical way, build the string in your application and provide it as a single parameter:

... MATCH @param;

这篇关于在SQLite中,使用带有AND / OR运算符的MATCH不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆