假设我有一个包含A,B,C,D列的表,我想在A列和C列上进行匹配
我看到你可以匹配sqlite中的单个列或所有列,即
- match column A
select * from table where A match 'cat'
- match all columns
select * from table where table match 'cat'
Run Code Online (Sandbox Code Playgroud)
是否可以只匹配A列和C列?如果没有,你们怎么解决这个问题?
谢谢你的建议!
小智 29
我不认为您可以在单个FTS查询中使用多个MATCH运算符.使用column_name:target_term可以使用一个全文搜索来搜索多个列.
SELECT * FROM table WHERE table MATCH 'A:cat OR C:cat'
Run Code Online (Sandbox Code Playgroud)
http://www.sqlite.org/fts3.html#termprefix
您可以指定要匹配的整个表,而不是指定要匹配的列.例如:
-- Example schema
CREATE VIRTUAL TABLE mail USING fts3(subject, body);
-- Example table population
INSERT INTO mail(docid, subject, body) VALUES(1, 'software feedback', 'found it too slow');
INSERT INTO mail(docid, subject, body) VALUES(2, 'software feedback', 'no feedback');
INSERT INTO mail(docid, subject, body) VALUES(3, 'slow lunch order', 'was a software problem');
-- Example queries
SELECT * FROM mail WHERE subject MATCH 'software'; -- Selects rows 1 and 2
SELECT * FROM mail WHERE body MATCH 'feedback'; -- Selects row 2
SELECT * FROM mail WHERE mail MATCH 'software'; -- Selects rows 1, 2 and 3
SELECT * FROM mail WHERE mail MATCH 'slow'; -- Selects rows 1 and 3
Run Code Online (Sandbox Code Playgroud)
对于使用MATCH的多列条件,将UNION用作“ OR”,将INTERSECT用作“ AND”
SELECT * FROM TBL_VIRTUAL_APPOINTMENT WHERE PATIENT_PREFIX MATCH 'D*'
UNION
SELECT * FROM TBL_VIRTUAL_APPOINTMENT WHERE patient_first_name MATCH 'K*'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12532 次 |
| 最近记录: |