Hsqldb - 如何删除 char 字段上的填充

Posted

技术标签:

【中文标题】Hsqldb - 如何删除 char 字段上的填充【英文标题】:Hsqldb - how to remove the padding on char fields 【发布时间】:2010-06-01 15:28:05 【问题描述】:

我发现 Char 字段正在被填充。

有什么办法可以阻止这种情况的发生。

我尝试过使用该属性

SET PROPERTY "sql.enforce_strict_size" FALSE

但似乎没有帮助。

【问题讨论】:

【参考方案1】:

确实,mysql docs 指定“检索 CHAR 值时,将删除尾随空格”。这很奇怪,因为其他数据库似乎总是保留填充(我可以确认对于 Oracle)。 SQL-92 standard 表示右填充空格是字符的一部分,例如在 p 上的 CAST 函数的定义中。 148.当源(SV=源值)和目标(TV=目标值,LTD=目标数据类型的长度)时,那么:

ii)  If the length in characters of SV is larger than LTD, then
     TV is the first LTD characters of SV. If any of the re-
     maining characters of SV are non-<space> characters, then a
     completion condition is raised: warning-string data, right
     truncation.

iii) If the length in characters M of SV is smaller than LTD,
     then TV is SV extended on the right by LTD-M <space>s.

也许这只是 MySQL 的众多 oddities 和 gotchas 中的另一个。

并回答您的问题:如果您不想要尾随空格,则应使用 VARCHAR。

【讨论】:

【参考方案2】:

我认为 'char' 的定义是填充空格以填充字段。它们被认为是固定长度的,并将被填充为固定长度。

数据类型“varchar”被定义为变量 char,它们填充空格以填充字段。

我可能是错的,因为我通常在 SQL Server 上工作。

【讨论】:

你可能是对的,但在 mysql 中它似乎确实修剪了 char 字段。

以上是关于Hsqldb - 如何删除 char 字段上的填充的主要内容,如果未能解决你的问题,请参考以下文章

从脚本创建和填充 HSQLDB

hsqldb *.script.new 创建和删除

如何正确预填充颤振表单字段?

删除或缩小 HSQLDB 数据库中的 lobs 文件

如何删除 Chrome 存储的自动填充数据?

如何查询 hsqldb 2.5.1 的系统版本