我正在处理以下查询:查找首都是国家/地区加上“城市”的国家/地区。希望你可以推断出我的意思:
以下查询将解决此问题:
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语句
答案 0 :(得分:1)
执行您想要的操作需要正则表达式,其支持取决于数据库。您无法使用LIKE
轻松完成此操作。
因为“city”和“town”具有相同数量的字母且大多数数据库支持right()
,所以您可以这样做:
where world.capital like concat(world.name, ' ____') and
right(world.capital, 4) in ('City', 'Town')
但是,我认为使用两个like
或使用正则表达式的方法更清晰。