当前位置: 首页 > 面试题库 >

H2表列在双引号中不区分大小写

孟新知
2023-03-14
问题内容

我正在开发一种工具,可以将数据导入动态生成的模式。因此,我几乎无法控制表或列的名称。我最近在表中创建2个名称相同但大小写不同的列时遇到了一个问题。此问题可以在最简单的DDL操作中得到证明:

CREATE TABLE "a" (
    "c1" integer,
    "C1" integer
)

在我的程序和h2控制台中,这对我来说失败了:

列名“ C1”重复;SQL语句:创建表“ a”(“ c1”整数,“ C1”整数)

例如,在PostgreSQL中这可以正常工作,我认为它应该可以工作,因为在值被双引号时,SQL规范要求区分大小写。

我目前正在使用内存h2数据库。

编辑: 它用尽了原因是使用选项建立了连接,DATABASE_TO_UPPER=false从而导致了此行为


问题答案:

在H2中,名称不区分大小写。

H2文件

…但…

带引号的名称区分大小写,并且可以包含空格。

引用名称的H2文档

我只是在H2的本地实例中运行了这个确切的示例,并且效果很好。

create table p ("c1" integer, "C1" integer);
insert into p values (1,2);
select * from p;

我认为您的SQL在H2中运行之前已被更改。在运行SQL之前,所有内容都可能被大写。

每次更新时,都会使用选项DATABASE_TO_UPPER = false建立连接,这会导致此行为



 类似资料:
  • 问题内容: 如果我有一个名为和的列名,它们是否不同? 如果我有一个名为和的表,它们是否不同? 问题答案: 在Unix上,表名区分大小写。在Windows上则不是。好玩,不是吗?Kinda喜欢各自的文件系统。你觉得这是巧合吗? 换句话说,如果您打算在Linux机器上进行部署,则也可以针对基于Linux的MySQL更好地测试SQL,或者在生产时为神秘的“找不到表”错误做好准备。这些天虚拟机很便宜。 字

  • 我很抱歉,如果我错过了关闭的第一个帖子的细节。我在字符串中添加了双引号内的逗号,并将字符串添加到变量中。我不能简单地用逗号分开。 原帖 基本上,我需要把一条线分成一个数组。但当“双引号”中的“双引号”出现时,我遇到了错误。示例行如下所示: “123”、“str”、“456”、“2021年10月8日上午7:44:47”、“str”、“str”、“str”、“str”、“0”、“789”、“1”、“1

  • 问题内容: 因此,我正在编写一个程序,将文本文件分解为单词,然后将列表写入新的文本文件。 我遇到的问题是我需要列表中的字符串使用双引号而不是单引号。 例如 我得到这个当我想这个 这是我的代码 我是python的新手,对此一无所获。有人知道如何解决吗? [编辑:我忘了提及我在arduino项目中使用的输出,该项目要求列表具有双引号。 问题答案: 您无法更改的工作方式。 如何使用用于字符串的JSON格

  • 我们知道,通过指定排序选项,字符串Tarantool索引可以不区分大小写:。例如。: 现在我们可以执行不区分大小写的查询: 但是如何使用SQL呢?这不起作用: 这也不是: 有一个肮脏的把戏,性能很差(完全扫描)。我们不想要它,是吗? 最后,我们还有一个解决办法: 但问题是,它是否使用索引?如果没有索引,它也可以工作。。。

  • 对于报告(0.1%的所有查询),我需要返回一个所有可能类别的列表,区分大小写! 考虑以下文件: 运行以下查询: 返回: 是否有方法返回区分大小写的类别(存储在文档中)?我对此查询结果中的感兴趣。 Elasticsearch论坛中的问题 谢谢,伊泰