如何处理PostgreSQL(Periscope)字段名中包含的英文句号?
PostgreSQL查询含英文句号字段的解决方案
PostgreSQL 中如果标识符(字段名、表名等)包含特殊字符(包括英文句号、空格、大小写混合字符),需要使用半角双引号将完整标识符包裹,且必须严格匹配建表时的标识符大小写。
你之前尝试转义不生效,基本都是因为以下几种常见错误:
- 只包裹了字段名的部分内容,没有把整个带句号的字段名完全包裹
- 误用了全角双引号、单引号、方括号作为转义符,PostgreSQL原生语法仅支持半角双引号作为标识符转义符
- 双引号内的字段名字母大小写和建表时的实际命名不一致,PostgreSQL加双引号的标识符是大小写敏感的
你的需求是查询名为via.channel的独立字段,原来的写法会被SQL解析器识别为via表/嵌套对象下的channel字段,自然会报错,正确写法如下:
SELECT "via.channel" FROM my_database.channel LIMIT 10;
如果按上述写法执行仍然报错,可以先执行下面的语句查询该表的所有字段,确认via.channel字段的准确拼写和大小写:
SELECT column_name FROM information_schema.columns WHERE table_catalog = 'my_database' -- 替换为你的实际数据库名 AND table_name = 'channel';
内容的提问来源于stack exchange,提问作者Chris Greiner
相关产品推荐
相关产品推荐

