HSQLDB 结果集 - 如何获取没有引号的 HSQLDB 返回空间作为空格且不为空?

Posted

技术标签:

【中文标题】HSQLDB 结果集 - 如何获取没有引号的 HSQLDB 返回空间作为空格且不为空?【英文标题】:HSQLDB Resultset - how to get HSQLDB return space without quotes as space and not null? 【发布时间】:2015-05-29 13:04:22 【问题描述】:

我正在使用 HSQLDB 链接现有的文本文件,触发 SQL 以检索结果集中的数据。 问题是如果文本文件有数据作为空间,HSQL DB 结果集为那些返回 null。 例如:文本文件行:

数据1|数据2|| |数据3

我期待结果集为

data1,data2,null, ,data3

HSQLDB 文档 guid/Chpt5 声明:“空字段被视为 NULL。这些字段在分隔符之间没有任何内容或只有空格。” 有没有办法改变这种默认行为?将分隔符之间没有空格视为 Null,将分隔符之间的空格视为空格?

【问题讨论】:

【参考方案1】:

根据HSQLDB documentation,“引用的空字符串被视为空字符串。”。在您的情况下,您是否能够修改现有的文本文件?如果是这样,您可以使用正则表达式(例如:\|\s+\|)将两个分隔符之间的一个或多个空格的所有实例替换为带引号的等效项:

data1|data2|| |data3

会变成

data1|data2||" "|data3

这应该允许 HSQLDB 获取这些字段值,而不是将它们设置为 null。

【讨论】:

感谢克劳迈耶!还有另一个问题..文本文件中有一些数据包含在引号中,尤其是那些可能包含数据分隔符的数据,例如:Data1|数据2|“数据|ta3”|。因此,为了按原样读取这些值,我使用了quoted = fasle 属性。所以如果我用“”替换空格字符,它会将空格读作“”。 这确实让它变得更复杂了——你能分两遍修改源文件吗?首先,将每个双引号替换为转义版本 ("")。然后,像以前一样使用引用的等价物替换空格。如果 HSQLDB 不喜欢这样,您必须正确清理数据并引用包含双引号字符的任何字段。

以上是关于HSQLDB 结果集 - 如何获取没有引号的 HSQLDB 返回空间作为空格且不为空?的主要内容,如果未能解决你的问题,请参考以下文章

HSQLDB 2.3.3:如何创建自定义类型?

带日期输入参数的 hsqldb 过程

使用 HSQLDB 关键字的奇怪行为

HSQLDB (HyperSQL) - 如何以毫秒精度将 UNIX 时间戳作为数字获取

如何将我的数据集转换为没有引号和数据集名称的 Json?

当结果插入 HSQLDB 表时,如何对结果进行排序?