我认为这是一个非常简单的问题,但我无法找出正确的搜索词来搜索它。这个问题是我能找到的最相似的问题,但这与我想要做的相反。
我有这样的查询:
SELECT * FROM table WHERE column LIKE "val1%" OR column LIKE "val2%" OR column LIKE "val3%", ...so..on..and..on
由于它是 OR,因此只有其中一些会从列中给出匹配项。
如何使用查询本身返回匹配的 LIKE 子句?像这样 :
SELECT *, (val1 or val2 or val3 - the matched val) FROM table WHERE column LIKE "val1%" OR column LIKE "val2%" OR column LIKE "val3%", ...so..on..and..on
由于匹配是通过通配符“%”进行的,所以我需要得到匹配的确切值。
如果表是这样的:
| 姓名 | 年龄 |
|---|---|
| 麦克风 | 1 |
| 约翰 | 2 |
| 迈克尔 | 3 |
| 米琳达 | 4 |
如果查询是:
SELECT *, (the matched value) FROM table WHERE name LIKE "Mik%" OR name LIKE "Mic%" OR name LIKE "mia%"
它会返回:
| 姓名 | 年龄 | 匹配 |
|---|---|---|
| 麦克风 | 1 | 米克 |
| 迈克尔 | 3 | 麦克风 |
这是否可能纯粹使用SQLite查询?我知道这可以在获得结果后稍后完成,但想要删除冗余,因为 SQLite 无论如何都已经匹配了。
注意:表很大。100,000+ 行。因此,性能是尽快获得结果的一个重要因素。OR 条件也可以是 5 或 10 或 15+