SQL查询SELECT字符串

时间:2016-03-06 16:13:28

标签: sql

我正在处理以下查询:查找首都是国家/地区加上“城市”的国家/地区。希望你可以推断出我的意思:

以下查询将解决此问题:

SELECT world.name
  FROM world
WHERE world.capital LIKE CONCAT(world.name, " City")

现在,说我还想匹配另一个词,Town。我们可以这样做:

SELECT world.name
  FROM world
WHERE world.capital LIKE CONCAT(world.name, " City") OR world.capital LIKE CONCAT(world.name, " Town")

我可以将上述语句压缩为仅一个LIKE子句吗?说这样的话?

SELECT world.name
 FROM world
WHERE world.capital LIKE CONCAT(world.name, " [City,Town]")

我只想要一个更简洁的SQL语句

1 个答案:

答案 0 :(得分:1)

执行您想要的操作需要正则表达式,其支持取决于数据库。您无法使用LIKE轻松完成此操作。

因为“city”和“town”具有相同数量的字母且大多数数据库支持right(),所以您可以这样做:

where world.capital like concat(world.name, ' ____') and
      right(world.capital, 4) in ('City', 'Town')

但是,我认为使用两个like或使用正则表达式的方法更清晰。