当like条件包含多个字符时,SQL返回null

时间:2012-12-17 11:30:11

标签: sql postgresql pgadmin

我正在使用SQL尝试使用PGAdmin从具有3.5米行的表中返回条目的子集。以下代码返回131,970行:

SELECT 
  orgs.org_name, 
  orgs.org_oid
FROM 
  public.orgs
WHER
  org_name LIKE 'L%'
ORDER BY
  orgs.org_name ASC

但是,一旦我在LIKE标准中添加了更多字符,PGAdmin根本不会返回任何数据:

SELECT 
  orgs.org_name, 
  orgs.org_oid
FROM 
  public.orgs
WHER
  org_name LIKE 'Lo%'
ORDER BY
  orgs.org_name ASC

我认为我的SQL没有任何问题,但我没有收到来自PGAdmin的错误消息,表明内存或其他任何问题可能都是问题。

我使用PGAdmin 1.16.0和Postgres 9.2在mac OS X 10.8上运行

3 个答案:

答案 0 :(得分:2)

尝试对数据使用lower关键字:

SELECT 
  orgs.org_name, 
  orgs.org_oid
FROM 
  public.orgs
WHER
  lower(org_name) LIKE 'lo%'
ORDER BY
  orgs.org_name ASC

答案 1 :(得分:2)

如果您确定orgs中的名字以'Lo'开头,请尝试使用UPPER,如下所示:

SELECT 
  orgs.org_name, 
  orgs.org_oid
FROM 
  public.orgs
WHERE
  UPPER(org_name) LIKE 'LO%'
ORDER BY
  orgs.org_name ASC

答案 2 :(得分:2)

您可以使用ilike进行过滤而不区分大小写:

SELECT orgs.org_name, orgs.org_oid FROM public.orgs
WHERE
UPPER(org_name) ILIKE 'LO%' --OR ILIKE 'lo%' (same thing)