Informix 中的某些表是否仅采用小写形式的列值?
Does some tables in Informix take values of a column only in lower case?
我在 table 中找到一些列,例如 sysdbspaces table 中的 name 列13=]sysmaster 数据库以及 Informix 中 tables 中的某些列同样只采用小写字母。假设我使用 onspaces
命令创建了一个名称为 SAmple 的数据库空间 sysdbspaces[=] 的 name 列中的新值21=] 将是 sample 而不是 SAmple 并且如果我查询其名称 = 'SAmple' 的数据库空间,它将返回 null 。遇到这种情况如何区分大小写?
正在将评论转为答案。
如果您愿意,您可以将大写(或混合大小写)用户名括在引号中。对于 sysdbspaces,我认为你被卡住了;名称被转换为小写,句号。不要对仅包含小写值的列使用大小写混合搜索。
作为系统目录中混合大小写名称的示例:
CREATE TABLE 'McDonald'.Ronald(t INTEGER NOT NULL)
有效并在所有者列中使用名称 McDonald
。您也可以使用分隔标识符(用双引号分隔的名称),但您需要设置 DELIMIDENT 环境变量。
顺便说一句,在 MODE ANSI 数据库中,您可以这样写:
create table whodunnit.murder_mystery (t integer not null);
并且系统目录会将所有者记录为大写的 WHODUNNIT。除非你引用用户名,否则用户名是informix
,它将被大小写转换。
我在 table 中找到一些列,例如 sysdbspaces table 中的 name 列13=]sysmaster 数据库以及 Informix 中 tables 中的某些列同样只采用小写字母。假设我使用 onspaces
命令创建了一个名称为 SAmple 的数据库空间 sysdbspaces[=] 的 name 列中的新值21=] 将是 sample 而不是 SAmple 并且如果我查询其名称 = 'SAmple' 的数据库空间,它将返回 null 。遇到这种情况如何区分大小写?
正在将评论转为答案。
如果您愿意,您可以将大写(或混合大小写)用户名括在引号中。对于 sysdbspaces,我认为你被卡住了;名称被转换为小写,句号。不要对仅包含小写值的列使用大小写混合搜索。
作为系统目录中混合大小写名称的示例:
CREATE TABLE 'McDonald'.Ronald(t INTEGER NOT NULL)
有效并在所有者列中使用名称 McDonald
。您也可以使用分隔标识符(用双引号分隔的名称),但您需要设置 DELIMIDENT 环境变量。
顺便说一句,在 MODE ANSI 数据库中,您可以这样写:
create table whodunnit.murder_mystery (t integer not null);
并且系统目录会将所有者记录为大写的 WHODUNNIT。除非你引用用户名,否则用户名是informix
,它将被大小写转换。