2012-01-26 50 views
1

我使用Postgres的,我有一個「用戶」表中包含用戶名和姓:SQL選擇 - 你能匹配一個字符串到兩列嗎?

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

我想使用一個選擇基於單串一組用戶(匹配到first_name和last_name的開頭,所以如果我搜索「j」,兩個記錄都會返回,如果我搜索「jo」,只返回第一條記錄。在Postgres中只使用SQL做這個查詢?或者我將不得不做幾個select調用,然後使用另一種編程語言格式化結果?

謝謝!

回答

2

爲什麼不只是使用OR運算符。

例如

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

如果first_name或last_name以'jo'開頭,那麼該行將被返回。

就效率而言,這種'開始於'查詢可以利用索引,但取決於您將如何查詢,您可能最好使用全文索引 - 特別是如果您要使用在字符串兩側通配符(如LIKE「%祚%」)更多信息可以在這裏找到:http://wiki.postgresql.org/wiki/Full_Text_Indexing_with_PostgreSQL

0

你的意思

select * from users where first_name like "string%" or last_name like "string%"; 

相關問題