显示字符串列以特定字母开头的行[重复]
Posted
技术标签:
【中文标题】显示字符串列以特定字母开头的行[重复]【英文标题】:Display row where string column starts with specific letter [duplicate] 【发布时间】:2020-10-27 22:22:04 【问题描述】:我研究了如何解决我的问题,但我使用的编译器不断抛出无效标识符错误。让我解释一下。
我有一个表,其中的列和数据类型分别匹配
Id | City | State
------------------------
NUMBER | VARCHAR2(21) | VARCHAR(2)
我想获取所有名称以字母“a”开头的非重复城市。我已经尝试了以下查询
SELECT DISTINCT CITY
FROM STATION
WHERE CITY LIKE "A%";
我也试过
SELECT CITY
FROM STATION
WHERE CITY LIKE "A%"
ORDER BY CITY;
但我一直收到
ORA-00904: "A%": invalid identifier
我已经查找了类似问题的问题,答案似乎整合了“LIKE”条件。我已经这样做了,但是,唉,一个错误。这似乎应该是一个容易解决的问题。有什么想法吗?
【问题讨论】:
【参考方案1】:使用单引号!双引号仅用于标识符(例如列名、表名等),因此会出现错误。
另一方面,单引号代表文字字符串,这就是您的意思:
SELECT DISTINCT CITY
FROM STATION
WHERE CITY LIKE 'A%';
在这方面,Oracle 严格遵循 ANSI SQL 规范。还有其他数据库允许对字符串使用双引号,并使用其他字符来引用标识符(例如 mysql)......但我个人认为这会让事情变得更加混乱,他们需要这样做。
【讨论】:
GMB,你又救了我的命!我已经习惯了 python 字符串(我的第一种编程语言)的单引号和双引号的可互换性,以至于我没有三思而后行。谢谢。以上是关于显示字符串列以特定字母开头的行[重复]的主要内容,如果未能解决你的问题,请参考以下文章
shell脚本应用正则表达式grep,sed,awk,的应用