【问题标题】:SQL select - can you match one string to two columns?SQL select - 你可以将一个字符串匹配到两列吗?
【发布时间】:2012-01-26 22:01:44
【问题描述】:

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

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

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

是否有一种仅使用 SQL 在 postgres 中执行此查询的有效方法?还是我必须进行几次选择调用,然后使用另一种编程语言格式化结果?

谢谢!

【问题讨论】:

    标签: sql postgresql


    【解决方案1】:

    为什么不直接使用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 '%jo%')。更多信息可以在这里找到:http://wiki.postgresql.org/wiki/Full_Text_Indexing_with_PostgreSQL

    【讨论】:

      猜你喜欢
      • 2015-12-14
      • 2019-05-21
      • 2020-09-04
      • 1970-01-01
      • 2015-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-07
      相关资源
      最近更新 更多