我使用postgres,我有一个"用户"包含用户名和姓的表:
id | first_name | last_name | ...
-----------------------------------
1 | daniel | johnston |
2 | jane | austin |
我想基于单个字符串选择一组用户(匹配first_name和last_name的开头。所以,如果我搜索" j",两个记录都将如果我搜索" jo",则只返回第一条记录。
是否有一种有效的方法只使用SQL在postgres中执行此查询?或者我是否需要进行多次选择调用,然后使用其他编程语言格式化结果?
谢谢!
答案 0 :(得分:2)
为什么不使用OR
运算符。
e.g。
SELECT id, first_name, last_name
FROM users
WHERE (first_name LIKE 'jo%' OR last_name like 'jo%')
如果first_name或last_name以'jo'开头,则返回该行。
就效率而言,这种“以'开头'查询可以利用索引,但是根据你的查询方式,你可能会更好地使用全文索引 - 特别是如果你打算使用字符串两边的通配符(例如LIKE'%jo%'。)更多信息可以在这里找到:http://wiki.postgresql.org/wiki/Full_Text_Indexing_with_PostgreSQL