sql - 'ORA-00904: "RIGHT": invalid identifier' Oracle 查询错误
问题描述
从 STATION 查询以元音(即 a、e、i、o 和 u)作为首尾字符的城市名称列表。您的结果不能包含重复项。
站台表如下:
当我写这个查询
SELECT DISTINCT CITY
FROM STATION
WHERE (LEFT(CITY,1) IN ('A','E','I','O','U')) AND (RIGHT(CITY,1) IN ('A','E','I','O','U'));**
我收到一个错误:
ORA-00904: "RIGHT": 无效标识符
解决方案
left()
并且right()
不是甲骨文中的东西。相反,您可以使用substr()
. 您可以传递一个负的起始索引来获取最后一个字符:
select city
from station
where substr(city, 1, 1) in ('a','e','i','o','u')
and substr(city, -1) in ('a','e','i','o','u')
我不确定您是否真的需要distinct
这里,所以我将其删除 - 如果出于某种原因需要,您可以将其放回去。
你也可以用正则表达式来表达它;这使得代码更短,但很可能比简单的字符串函数效率低:
where regexp_like(city, '^[aeiou].*[aeiou]$'
请注意,这与其他解决方案并不完全相同,因为它需要字符串中至少有两个字符(而第一个查询很乐意允许一个名为 的城市'a'
)
推荐阅读
- c++ - C ++我如何在一个类中循环函数,以便我可以设置多个学生信息?
- android - 如何使用 WebAuthenticator 为 Android 提供私有身份验证会话以进行 Google 身份验证
- php - PHP致命错误:未捕获的错误:调用未定义的函数
- windows - 如何确定 Windows 从哪个驱动器启动?
- mysql - 使用自制软件安装的 Mysql Server 总是消失
- javascript - 使用异步函数将 fetch Promise 响应保存到变量值
- android - React Native 联系权限总是返回被拒绝
- android - 使用 ViewModel 和 LiveData 时如何设置 Firebase 实时数据库的子值?
- c# - c#按钮调用几种方法
- powershell - PowerShell > 为什么我需要在函数返回值之前内联声明函数参数?