无法在 sqlfiddle (oracle) 上的选择查询中使用列名

2024-02-15

如果我错误地使用 sqlfidle 或者缺少功能,我不会?

重现步骤:

  1. 选择oracle选项(左上角)
  2. 创建表并插入数据:

    CREATE TABLE products
    ("P_Id" int, "ProductName" varchar2(10), "UnitPrice" numeric, "UnitsInStock" int, "UnitsOnOrder" int)
    //
    
    INSERT ALL 
    INTO products ("P_Id", "ProductName", "UnitPrice", "UnitsInStock", "UnitsOnOrder")
     VALUES (1, 'Jarlsberg', 10.45, 16, 15)
    INTO products ("P_Id", "ProductName", "UnitPrice", "UnitsInStock", "UnitsOnOrder")
     VALUES (2, 'Mascarpone', 32.56, 23, NULL)
    INTO products ("P_Id", "ProductName", "UnitPrice", "UnitsInStock", "UnitsOnOrder")
     VALUES (3, 'Gorgonzola', 15.67, 9, 20)
    SELECT * FROM dual
    //
    
  3. 构建架构

  4. 运行查询并验证结果是否正确

    select * from products
    
  5. 使用列名(任意)运行查询并得到错误:

    select ProductName from products
    

给出的错误:

ORA-00904: “ProductNAME”: 无效标识符

我的查询是否错误或者不可能sqlfiddle在选择查询中使用列名?我有任何解决方法可以继续测试我的查询吗?


[TL;DR] 最简单的事 https://stackoverflow.com/a/35556194/1509264要做的就是永远不要在对象名称周围使用双引号,而只是让 Oracle 以默认方式管理区分大小写。

但是,您可以在 SQLFiddle 中使用双引号:

SQL小提琴 http://sqlfiddle.com/#!4/cbabd2/1

Oracle 11g R2 架构设置:

CREATE TABLE products
("P_Id" int, "ProductName" varchar2(10), "UnitPrice" numeric, "UnitsInStock" int, "UnitsOnOrder" int)
//

INSERT ALL 
INTO products ("P_Id", "ProductName", "UnitPrice", "UnitsInStock", "UnitsOnOrder")
 VALUES (1, 'Jarlsberg', 10.45, 16, 15)
INTO products ("P_Id", "ProductName", "UnitPrice", "UnitsInStock", "UnitsOnOrder")
 VALUES (2, 'Mascarpone', 32.56, 23, NULL)
INTO products ("P_Id", "ProductName", "UnitPrice", "UnitsInStock", "UnitsOnOrder")
 VALUES (3, 'Gorgonzola', 15.67, 9, 20)
SELECT * FROM dual
//

Query 1:

SELECT "ProductName" FROM products

Results http://sqlfiddle.com/#!4/cbabd2/1/0:

| ProductName |
|-------------|
|   Jarlsberg |
|  Mascarpone |
|  Gorgonzola |
  1. 使用列名(任意)运行查询并得到错误:

    select ProductName from products

给出的错误:

ORA-00904: “ProductNAME”: 无效标识符

Oracle 数据库默认区分大小写;但是,默认情况下,它们也会将所有内容转换为大写,以便从用户那里抽象出区分大小写的情况。仅当您使用双引号时,Oracle 才会使用您为标识符指定的大小写。

由于您在中使用了带引号的标识符CREATE TABLE语句中您还需要使用带引号的标识符SELECT语句与表创建中使用的情况完全相同。

所以,列名不是ProductName it is "ProductName"(带双引号)。

更好的解决方案是不使用双引号:

SQL小提琴 http://sqlfiddle.com/#!4/3e6e1f/1

Oracle 11g R2 架构设置:

CREATE TABLE products(
  P_Id         int,
  ProductName  varchar2(10),
  UnitPrice    numeric,
  UnitsInStock int,
  UnitsOnOrder int
)
//

INSERT INTO products ( P_Id, ProductName, UnitPrice, UnitsInStock, UnitsOnOrder )
  SELECT 1, 'Jarlsberg', 10.45, 16, 15 FROM DUAL UNION ALL
  SELECT 2, 'Mascarpone', 32.56, 23, NULL FROM DUAL UNION ALL
  SELECT 3, 'Gorgonzola', 15.67, 9, 20 FROM DUAL
//

Query 1:

SELECT ProductName FROM products

Results http://sqlfiddle.com/#!4/3e6e1f/1/0:

| PRODUCTNAME |
|-------------|
|   Jarlsberg |
|  Mascarpone |
|  Gorgonzola |
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法在 sqlfiddle (oracle) 上的选择查询中使用列名 的相关文章

随机推荐

  • 我可以根据查询在 SSIS for 循环中设置变量吗?

    我有一个在 SSIS 中执行的 SQL 查询 用于将数据加载到 CSV 文件中 如下所示 SELECT FROM SomeTable WHERE SomeDate BETWEEN 1 Jan 2016 AND 31 Dec 2016 AND
  • 在 GPU 上计算平方欧氏距离矩阵

    Let p是第一组位置的矩阵 其中每行给出特定点的坐标 同样 让q是第二组位置的矩阵 其中每行给出特定点的坐标 那么两两平方欧氏距离的公式为 k i j p i q j p i q j where p i 表示i矩阵第 行p and p 表
  • 如何命名 PowerPoint 幻灯片中的对象?

    所以我知道如何使用 VB 命名文本框或 PowerPoint 中的类似对象 但我想知道是否有一种方法可以通过功能区命名对象 PowerPoint 2007 例如 如果我在幻灯片上添加一个文本框 有没有办法为其指定一个名称 有点像 Acces
  • Java/Kotlin 注释处理器:获取注释字段/属性的类型

    例如我有一堂课 class Foo AnnotatedProp var foo Boolean null 我怎样才能得到类型foo我的自定义注释处理器中的属性 在伪中我期望类似的东西 annotatedElement getStringif
  • Julia 中的 1 元素数组到标量

    将行向量和列向量相乘 我期望结果是标量 但它是一个一维 单元素数组 julia gt 1 2 3 4 5 6 1 element Array Int64 1 32 问题1 这背后的理由是什么 问题 2 将此视为 Julia 的一个怪癖 我想
  • 在 Swift 中解析 CSV 文件

    应用程序启动时 我需要将数据预加载到我的 tableView 中 所以我通过解析 csv 文件来使用核心数据 我正在关注本教程 http www appcoda com core data preload sqlite database 以
  • 在 Angular 4 cli 项目中的何处添加 htaccess 文件以添加重写规则?

    我已经完成了角度项目 现在我想完全使用 htaccess 文件强制更改一些 url 格式 那么我应该将 htaccess 文件放在哪里 我已经尝试过像下面的路径这样的地方 opt lampp htdocs GreatColoradoHome
  • 如何获得每列的平均值,按某分组?

    我正在使用 R 我有一个数据集 group attribute1 attribute2 attribute3 A 1 2 3 A 2 3 4 B 2 4 2 B 2 2 1 如何编写输出函数 group attribute1 attribu
  • 过滤 dataTables.net,不包含过滤框输入

    我想使用DataTables的过滤功能 但不想使用他们的搜索框 在他们的文档中 http datatables net usage featuresbFilter 下显示 请注意 如果您希望在数据表中使用过滤 则必须保持 true 要删除默
  • ResultSet getString 字符编码为 un​​icode 字符

    在我的 swing 应用程序中 我将显示数据库中的印地语 unicode 字符 当我显示名称时 它按原样显示 而不是印地文字符串 但是当我将其硬编码到程序中时 它显示正确 问题是什么 从数据库获取数据时是否有任何字符编码选项 我正在使用 O
  • Titanium api.info 从不在控制台中显示任何内容

    我刚刚开始使用钛 但我无法制造Ti API info 我的日志消息 在控制台中打印任何内容 我尝试在我的 Android 设备 Android 模拟器 iPhone 模拟器中以及 GoogleChrome 中作为移动 Web 项目运行该应用
  • 为此我需要哪种音频播放技术?

    我在选择正确的音频播放技术时遇到了困难 iPhone 上使用了大量的技术 令人眼花缭乱 我需要做的是这样的 开始播放 0 1 到 2 秒之间的短声音 高品质播放 无爆裂声 我听说一些 iPhone 音频播放技术在开始或结束时会发出爆裂声 这
  • 替换标准 Android JSON 解析器以获得更好的性能?

    我知道 Android 有一个内置的 JSON 解析器 但我想知道是否值得使用提供更好性能的东西 比如 Jackson 请参阅http jackson codehaus org http jackson codehaus org 有人试过吗
  • 会议结束后如何获取 Twilio 会议参与者?

    根据 Twiliodocs https www twilio com docs api rest participant list get filters curl G https api twilio com 2010 04 01 Acc
  • Android 6.0.1 - 权限问题 = wifiManager.getScanResults() 返回 0

    PermissionsList add 不起作用 但 MainActivity this requestPermissions 工作正常 问题是它会带来一个对话框 询问用户是否允许位置权限 为什么添加权限不起作用 有没有办法避免对话框 请参
  • Jenkins - 将数组/列表传递给参数化远程构建

    我正在使用 Jenkins 通过以下方式远程运行 Ansible playbookPublish Over SSH命令 这个命令 curl k v X POST https jenkins myhost com job Ansible De
  • 将数据框的列名称作为每列图的标题

    我有一个包含 36 列和 3000 多行的数据框 我正在使用绘图函数for loop绘制每列的图表 我希望图表的标题显示为列名称 我怎样才能做到这一点 for i in c 1 36 plot DowData i type l main c
  • CSS 背景图像未显示高度自动

    我有一个带有背景图像的 div 我必须指定一个以 px 为单位的高度才能显示 但我希望它在宽度调整时以自动高度显示 我被困住了 当我有高度自动时 它根本不显示图像 slider shadow1 z index 9999 margin 0 a
  • Git 挑选那些包含关键字(跟踪 ID)的提交

    出于代码审查的目的 我想 樱桃选择特定提交 与他们一起创建一个新分支并 将该分支推送到远程 这样我就可以将分支 url 提供给同行进行审核 我想创建一个 shell 脚本并发出简单的命令 例如 git review
  • 无法在 sqlfiddle (oracle) 上的选择查询中使用列名

    如果我错误地使用 sqlfidle 或者缺少功能 我不会 重现步骤 选择oracle选项 左上角 创建表并插入数据 CREATE TABLE products P Id int ProductName varchar2 10 UnitPri