我正在尝试按升序显示2017年1月13日之后加入的所有用户的用户名,姓氏,加入日期和国家/地区名称。但是,每次我尝试调用任何列时,都会收到错误消息“列:无效标识符”。
campaign_criterion_service = ADWORDS_CLIENT.GetService(
'CampaignCriterionService', version='v201809')
selector = {
'fields': ['CampaignId', 'Id', 'CriteriaType', "PlacementUrl",
'KeywordText', "ChannelName", "AppId", "DisplayName", "CampaignStatus", "CampaignName"],
'predicates': [{
'field': 'CriteriaType',
'operator': 'IN',
'values': [
'CUSTOM_AFFINITY',
'CUSTOM_INTENT'
]
},
{
'field': 'CampaignStatus',
'operator': 'IN',
'values': [
'ENABLED'
]
}
],
'paging': {
'startIndex': 0,
'numberResults': 500
}
}
page = campaign_criterion_service.get(selector)
简单的代码,例如:
SELECT Username, LastName, JoinDate, CountryName
FROM BR_USER, BR_COUNTRY
WHERE JoinDate = '01-JAN-17' AND JoinDate IS NOT NULL
ORDER BY JoinDate ASC;
给出相同的无效标识符错误,帮助
答案 0 :(得分:1)
如documentation所述:
每个数据库对象都有一个名称。在SQL语句中,您用带引号的标识符或未带引号的标识符表示对象的名称。
- 带引号的标识符以双引号(“)开头和结尾。如果使用带引号的标识符命名架构对象,则在引用该对象时必须使用双引号。
如果用双引号定义列名,则在引用该列时,注定要使用双引号。或表格或其他带有名称的东西。
实际上,我认为文档不是100%正确的。 Oracle将所有标识符大写以进行解析。因此,如果您使用全大写字母定义了带引号的标识符,那么它将不带引号就可以工作。如此有效:
create table t (
"COL" int
);
select "COL", COL, col
from t;
Here是db <>小提琴。
但是谁想记住这样的规则-如此神秘而又复杂的规则,甚至使文档产生误导。
简单的解决方案:不要使用双引号。