2012-12-17 27 views
2

我正在使用SQL尝试使用PGAdmin从3.5m行的表中返回一个表的子集。下面的代码返回131970行:当类似条件包含多个字符时SQL返回null

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的错误消息,指出内存或其他可能是问题的东西。

我在Mac OS X 10.8上运行使用pgAdmin的1.16.0和Postgres 9.2

+2

是否有名称以'Lo'开头的组织?我敢打赌,有没有... – dezso

+0

@woodbine,我想你在谷歌上搜索了一下,你可以自己解决这个问题。你的查询没有问题。而您没有从第二个查询中获取任何数据的原因是因为在orgs.org_name列中没有以'Lo'开头的记录。 – Luv

回答

2

尝试使用较低的关键字的数据:

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

org_name中的所有内容都是大写的,所以我感觉有点蠢。谢谢你们的帮助。 – woodbine

2

如果你确定在orgs你的名字开始与“罗”,尝试如下使用UPPER

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

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

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