[问题] QT Sqlite语法以及全文检索FTS问题

楼主: liu2007 (è–¯)   2021-11-19 16:36:24
我的开发平台是 win7
工具是QT Creator
版本是Qt Core 5.15.2
在写一些存取Sqlite数据库的程式碰到了两个问题。
1.当要查询的字当中包含sql语法保留字的时候:
QString keyword;
QString queryString{"SELECT * FROM exfts WHERE nameEN match ?"};
query.prepare(queryString);
query.addBindValue(keyword);
当keyword是sql语法的保留字,例如:AND, OR等等,querry会失败
想请问QT有相对应函式可以解决吗?
还是只能自己判断如果要搜的关键字是保留字的时候
querryString要自己变成
QString queryString{"SELECT * FROM exfts WHERE nameEN match " +
"'"+ keyword +"';"};
2.第二个问题就是在使用全文检索FTS的时候
match + 万用字符* 跟
一般普通的sql语法 like + 万用字符%
两者似乎有什么不一样
如果我想要找有包含“水果”两个字的字段
使用 like '%水果%'搜寻
那不管是
1.好吃的水果
2.好吃 水果真的很好吃
3.好吃 水果 真的很好吃
3.好吃-水果-真的很好吃
都可以捞出来
但如果是match '水果'
只有3会被捞出来
如果使用match '*水果*'
有时候可以被捞出来
也有可能不会被捞出来
因为这是之前碰到的问题现在才来问
所以当时的数据库资料以及下的关键字我一时举例不上来
我下班之后如果有找到例子会再补上
目前只确定使用match '关键字'的时候
两旁有用空白切开来的字段才会被捞出来,例如上述的3
其他包含在一句没断开的句子里则不会捞出来
用万用字符摆前或摆后也没有正确捞出
想请问是我完全搞错FTS的万用字符*的用法
还是是因为非英语的文字分割字词的关系?
又或是其他原因呢?
感谢阅读

Links booklink

Contact Us: admin [ a t ] ucptt.com