SQL select - 你能把一个字符串匹配到两列吗?

时间:2012-01-26 22:01:44

标签: sql postgresql

我使用postgres,我有一个"用户"包含用户名和姓的表:

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

我想基于单个字符串选择一组用户(匹配first_name和last_name的开头。所以,如果我搜索" j",两个记录都将如果我搜索" jo",则只返回第一条记录。

是否有一种有效的方法只使用SQL在postgres中执行此查询?或者我是否需要进行多次选择调用,然后使用其他编程语言格式化结果?

谢谢!

1 个答案:

答案 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