与SQL Server 2014中的字符串进行比较时,标识符无效
我正在尝试使用HackerRank挑战自学SQL,目前我正在尝试选择亚洲所有指定城市的人口总数 表格结构如下: 对于城市表:与SQL Server 2014中的字符串进行比较时,标识符无效,sql,sql-server,Sql,Sql Server,我正在尝试使用HackerRank挑战自学SQL,目前我正在尝试选择亚洲所有指定城市的人口总数 表格结构如下: 对于城市表: +-------------+----------+ | Field | Type | +-------------+----------+ | ID | int(11) | | Name | char(35) | | CountryCode | char(3) | | District | char(20)
+-------------+----------+
| Field | Type |
+-------------+----------+
| ID | int(11) |
| Name | char(35) |
| CountryCode | char(3) |
| District | char(20) |
| Population | int(11) |
+-------------+----------+
+----------------+-------------+
| Field | Type |
+----------------+-------------+
| Code | char(3) |
| Name | char(52) |
| Continent | char(50) |
| Region | char(26) |
| SurfaceArea | float(10,2) |
| IndepYear | smallint(6) |
| Population | int(11) |
| LifeExpectancy | float(3,1) |
| GNP | float(10,2) |
| GNPOld | float(10,2) |
| LocalName | char(45) |
| GovernmentForm | char(45) |
| HeadOfState | char(60) |
| Capital | int(11) |
| Code2 | char(2) |
+----------------+-------------+
对于国家/地区
表:
+-------------+----------+
| Field | Type |
+-------------+----------+
| ID | int(11) |
| Name | char(35) |
| CountryCode | char(3) |
| District | char(20) |
| Population | int(11) |
+-------------+----------+
+----------------+-------------+
| Field | Type |
+----------------+-------------+
| Code | char(3) |
| Name | char(52) |
| Continent | char(50) |
| Region | char(26) |
| SurfaceArea | float(10,2) |
| IndepYear | smallint(6) |
| Population | int(11) |
| LifeExpectancy | float(3,1) |
| GNP | float(10,2) |
| GNPOld | float(10,2) |
| LocalName | char(45) |
| GovernmentForm | char(45) |
| HeadOfState | char(60) |
| Capital | int(11) |
| Code2 | char(2) |
+----------------+-------------+
我的问题是:
SELECT
SUM(Population)
FROM
(SELECT
City.Population AS Population,
Country.Continent AS Continent
FROM
City
INNER JOIN
Country ON City.CountryCode = Country.Code)
WHERE
Continent = "Asia";
据我所知,所有国家代码与亚洲国家代码相同的城市的人口总和。但是,我得到以下错误:
第1行错误:ORA-00904:“亚洲”:标识符无效
使用
'Asia'
而不是“Asia”
默认情况下,字符串文本用“
括起来
您可以在表/对象标识符中使用”
,如:
CREATE TABLE "a c"(b iNT);
INSERT INTO "a c"(b)
VALUES (2), (3);
SELECT *
FROM "a c";
但是您应该使用[]
引用db对象名称,如:
CREATE TABLE [a c](b iNT);
INSERT INTO [a c](b)
VALUES (2), (3);
SELECT *
FROM [a c];
请注意,只有当处于打开状态时,此功能才起作用
启用“设置引号的标识符”时,标识符可以用双引号分隔,文字必须用单引号分隔
要将“
用作字符串文字,请使用:
SET QUOTED_IDENTIFIER OFF;
SELECT SUM(Population) FROM
(SELECT City.Population AS Population,
Country.Continent AS Continent
FROM City INNER JOIN Country
ON City.CountryCode = Country.Code)
WHERE Continent = "Asia";
使用'Asia'
而不是“
使用”
@lad2025,谢谢;双引号“
在SQL Server中?如果您使用的是SQL Server-为什么会出现ORA-00904
错误???@Shaktal如果您想了解更多有关SQL Server的信息,您可以使用提供的视频讲座,它们几乎涵盖了所有主题,搜索SQL。我将非常高兴获得更多反馈,了解我为什么会被否决。所以我可以改进我的答案。