使用通配符在postgresql中搜索

时间:2016-06-06 12:01:17

标签: postgresql

在postgres视图中,我想添加一个时间为青铜时代的视图。问题是有不同种类的青铜时代(例如:青铜时代早期和青铜时代晚期)。我尝试使用通配符找到所有的青铜时代,但我做错了。

我在temporal_abr列中有以下数据:

Bronze_age laat: 1100 - 800 vC
Bronze_age late 1100 - 800 vC and Iron_age: 800 - 12 vC
Bronze_age: 2000 - 800 vC and Iron_age: 800 - 12 vC
Iron_age late: 250 - 12 vC
Medieval late: 1050 - 1500 nC and Bronze_age late: 1100 - 800 vC

我想获得Bronze_age存在的所有记录。我试图用以下SQL

来做到这一点
CREATE OR REPLACE VIEW dans_tijd AS 
    SELECT import_tijd.dans_code,
    import_tijd.temporal_abr,
    geom_tijd.geom AS geometry,
   FROM import_tijd
   JOIN geom_tijd ON import_tijd.dans_code = geom_tijd.dans_code 
   where import_tijd.temporal_abr LIKE 'Bronze_age%'

请记住,bronze_age之间有一个空格。有人能帮助我吗?

1 个答案:

答案 0 :(得分:1)

使用%代替*并将=更改为ILIKELIKE

   WHERE import_tijd.temporal_abr ILIKE 'bronze_age%'

ILIKE如果字母区分大小写,则使用LIKE

你可以在中阅读 Manual refrence

修改:关注您的示例数据:

WHERE import_tijd.temporal_abr ILIKE 'bronze_age%'

会给:

Bronze_age laat: 1100 - 800 vC
Bronze_age late 1100 - 800 vC and Iron_age: 800 - 12 vC
Bronze_age: 2000 - 800 vC and Iron_age: 800 - 12 vC

如果您在开头添加%,您将获得包含文字bronze_age的所有内容。

   WHERE import_tijd.temporal_abr ILIKE '%bronze_age%'

会给:

Bronze_age laat: 1100 - 800 vC
Bronze_age late 1100 - 800 vC and Iron_age: 800 - 12 vC
Bronze_age: 2000 - 800 vC and Iron_age: 800 - 12 vC
Medieval late: 1050 - 1500 nC and Bronze_age late: 1100 - 800 vC