【问题标题】:Write a postgresql query that returns a list of name beginning with 'sa' and ends with 's'编写一个 postgresql 查询,返回以 'sa' 开头并以 's' 结尾的名称列表
【发布时间】:2013-02-10 05:15:09
【问题描述】:

问题是:

如果城市名称以字母“Sa”开头并以“s”结尾,则列出所有城市及其地区和国家/地区名称。按城市名称排序。

我不知道该怎么做的部分是“城市名称以字母'Sa'开头并以's'结尾。”

这就是我所拥有的:

SELECT ci.name AS city, ci. district, c.name AS country
FROM lab2.city ci INNER JOIN lab2.country c                    
ON (ci.country_code = c.country_code)
WHERE ci.name ~^ 'Sa' <----------------------This is the problem line. 
ORDER BY ci.name ASC;

【问题讨论】:

  • 欢迎来到 SO 并祝贺您提出第一个问题。当您收到回答了您的问题的回复时,您应该点击“已接受”按钮(看起来像一个复选标记)来标记它,这样其他人就不会仍在寻找解决方案。

标签: database postgresql where


【解决方案1】:

这个问题听起来像是在寻找一种模式。在这种情况下,您可以使用LIKE

SELECT   ci.name AS city, 
         ci.district, 
         c.name AS country
FROM     lab2.city ci 
         INNER JOIN lab2.country c
            ON ci.country_code = c.country_code
WHERE    ci.name LIKE 'Sa%s' 
ORDER    BY ci.name ASC;

【讨论】:

  • 根据你的喜好你也可以说WHERE ci.name ~ '^Sa.*s$';这与所示的LIKE 子句完全相同。这完全是您喜欢的问题。
  • @kgrittn 我的答案是针对一般 sql。 WHERE ci.name ~ '^Sa.*s$' 是 postgresql 专用的吗?
  • 我必须检查标准文档才能确定(如果我真的必须这样做,我只会查看它),但我的猜测是LIKE 更多便携的。我认为对这样的正则表达式的支持是 PostgreSQL 扩展。我只是指出它是因为问题被标记为postgresql
猜你喜欢
  • 2021-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-06
  • 2017-12-18
  • 1970-01-01
  • 2021-10-17
相关资源
最近更新 更多