字段值以结尾的 Postgres SELECT 语句

Posted

技术标签:

【中文标题】字段值以结尾的 Postgres SELECT 语句【英文标题】:Postgres SELECT statement where field value ends with 【发布时间】:2016-07-05 08:50:18 【问题描述】:

我有一个名为:web_data 的 postgres 数据库表

目前我正在运行以下 SQL 选择语句:

SELECT url_path FROM web_data WHERE url_path IS NOT NULL

以下是我将为 url_path 获得的一些示例结果:

/
/aboutus.html
/services.php
/images/twitter_counter.png
/images/facebook_counter.png
/mobile/windows/TileTemplate.xml
/en_US/fbevents.js
/css/style.css

我想返回 url_path 的最终值为以下任一值的结果:

/
.html
.htm
.php
.asp
.aspx
.pdf

有没有办法将它放入 SQL 语句中,而不是获取所有结果,然后使用 PHP 之类的东西进行处理?

【问题讨论】:

【参考方案1】:

使用LIKE 运算符:

select url_path
from web_data
where url_path like '%.htm'
   or url_path like '%.html'
   or url_path like '%.php'
   or url_path like '%.asp'
   or url_path like '%.aspx'
   or url_path like '%.pdf'
   or url_path like '%/';

http://www.postgresql.org/docs/current/static/functions-matching.html#FUNCTIONS-LIKE

【讨论】:

所以只有在开头的 % 意味着它必须这样结束?因为使用 LIKE 语法我通常会放 LIKE %.html% 另外,如果我有很多记录,LIKE 函数会很慢吗? @Ahmed: % 是一个通配符 %.html 表示任何以.html结束的值。是的,这会很慢,因为数据库不能为此使用正则索引。如果您确实有那么多行,则需要创建一个 trigram 索引,以便索引会有所帮助

以上是关于字段值以结尾的 Postgres SELECT 语句的主要内容,如果未能解决你的问题,请参考以下文章

postgres 多表查询时group by需要包含select中所有出现的字段

JPA 支持查询 Postgres JSON 字段

Jquery 选择器:属性值以开头和结尾

SQL结构化查询语——之DQL语言

节点 postgres 并获得具有重复名称的连接字段

1.完整语段的增删改 2.单表查询 3.多表查询