我使用postgres,我有一个“users”表,其中包含用户的名字和姓氏:

id | first_name | last_name | ...
-----------------------------------
 1 | daniel     | johnston  |
 2 | jane       | austin    |

我想使用一个基于单个字符串的选择用户集(匹配到名字和姓氏的开头)。所以如果我搜索“j”,两个记录都会被返回。如果我搜索“jo”,将只返回第一条记录。
在postgres中,是否有一种只使用SQL的高效查询方法?或者,我必须执行几个select调用,然后使用另一种编程语言格式化结果?
谢谢!

最佳答案

为什么不直接使用OR运算符。
例如

SELECT id, first_name, last_name
FROM users
WHERE (first_name LIKE 'jo%' OR last_name like 'jo%')

如果名字或姓氏以“jo”开头,则将返回行。
就效率而言,这种类型的“starts with”查询可以利用索引,但是根据您要查询的方式,最好使用全文索引-特别是如果您要在字符串的两边使用通配符(例如'%jo%')。更多信息可以在这里找到:http://wiki.postgresql.org/wiki/Full_Text_Indexing_with_PostgreSQL

09-27 19:52