Ibm midrange 为什么DB2forIBMi(AS400DB2)字段名在从MS EXCEL导入时以双引号“THISID”开头和结尾?

Ibm midrange 为什么DB2forIBMi(AS400DB2)字段名在从MS EXCEL导入时以双引号“THISID”开头和结尾?,ibm-midrange,db2-400,Ibm Midrange,Db2 400,今天,当我使用STRSQL和F4时,我发现一些DB2字段名以双引号开始和结束。但这似乎是随机发生的。 有人能为我解释为什么会发生这种事吗? 另外,我想知道我们是否可以保持现状或需要修复此问题?我假设您是使用“传输数据”加载项从Excel创建表的 列名被引用的两个原因 这是一个保留字。例如,将日期作为列名 默认情况下,创建表MYTBLDATE日期不为NULL 2.保留案例 创建表MYTBLMyColumn CHAR10默认值为非空 在第一种情况下,系统通常足够智能,允许您引用该列而不引用它;这项工

今天,当我使用STRSQL和F4时,我发现一些DB2字段名以双引号开始和结束。但这似乎是随机发生的。 有人能为我解释为什么会发生这种事吗?
另外,我想知道我们是否可以保持现状或需要修复此问题?

我假设您是使用“传输数据”加载项从Excel创建表的

列名被引用的两个原因

这是一个保留字。例如,将日期作为列名 默认情况下,创建表MYTBLDATE日期不为NULL 2.保留案例 创建表MYTBLMyColumn CHAR10默认值为非空

在第一种情况下,系统通常足够智能,允许您引用该列而不引用它;这项工作: 从mytbl中选择日期

但是,在第二种情况下,您必须始终使用引号和正确的大小写引用列;这不起作用:
从mytbl中选择mycolumn

DB2有两种类型的名称:

普通标识符是大写字母后跟零个或多个字符,每个字符是大写字母、数字或下划线字符。请注意,普通标识符转换为大写。普通标识符不应是保留字

分隔标识符是包含在SQL转义字符中的一个或多个字符的序列。序列必须由一个或多个字符组成。序列中的前导空格是有意义的。序列中的尾随空格不重要。分隔标识符的长度不包括两个SQL转义字符。请注意,分隔标识符不会转换为大写。转义字符是引号


参考:

谢谢查尔斯。我相信她使用System I数据传输。是的,我知道我不能将带双引号的字段名视为不带双引号的常规字段名。也许,这个字段还有其他问题吗?谢谢Buck,我用双引号检查了所有这个字段名,然后发现这个字段有两种类型。一个有varchar和长度6,另一个有char和长度8。。。这就是为什么AS400试图添加双引号来标识的原因吗?我不这么认为;至少我从未见过数据类型影响列名是否被分隔。转到绿色屏幕和表上的DSPFD,查看列名是否在DB2中实际被分隔。它看起来像是在DSPFD/DSPFFD中被分隔的。THISID CHAR 6 8 44两个THISID可变长度字段-分配长度:无编码字符集标识符….:65535字段总数………:5我认为您确认了其中一个是分隔的,另一个是普通的。如果是这样,数据库设计器就是这样创建表的。只需记住哪一个是分隔的,并将双引号与该列一起使用,这就是您所需要做的。如果列在与DSPFFD一起列出时显示“可选名称”,并且引号是其中的一部分,则SQL可以使用列出的“字段”名称或“可选名称”。引号字符是“备选名称”的一部分,因此在引用该名称时,它们必须存在。