DM7表名/字段名等对象的命名长度限制

一 问题

  业务升级过程中,涉及到数据库结构的更改,对于某些表的字段进行了重命名,在修改表的字段名的过程中,遇到了“标志符长度非法”的问题,如下图所示:

  这里先说明一下,对于DM7数据库,表名、字段名等对象命名字节个数限制在了128个字节,是无法更改的!具体参见《DM7_SQL语言使用手册》中的3.6.1 基表定义语句中的说明,摘录如下:

  • 表名的要求:
    <表名> 指明被创建的基表名,基表名最大长度 128 字节;如果是分区表,主表名和分区名遵循“主表名+分区名”总长度不大于 128 字节。
  • 列名的要求:
    <列名> 指明基表中的列名,列名最大长度 128 字节;

  其实,我们通过查看DM7数据库的动态性能视图就可以得出结论:

SQL> desc USER_TAB_COLS
行号       name            type$        nullable
---------- --------------- ------------ --------
1          TABLE_NAME      VARCHAR(128) N
2          COLUMN_NAME     VARCHAR(128) N
3          DATA_TYPE       VARCHAR(128) N
4          DATA_TYPE_MOD   VARCHAR(3)   Y
5          DATA_TYPE_OWNER VARCHAR(128) Y
6          DATA_LENGTH     NUMBER       Y
7          DATA_PRECISION  NUMBER       Y
8          DATA_SCALE      NUMBER       Y
9          NULLABLE        VARCHAR(1)   Y
10         COLUMN_ID       NUMBER       Y
11         DEFAULT_LENGTH  NUMBER       Y

行号       name                 type$         nullable
---------- -------------------- ------------- --------
12         DATA_DEFAULT         TEXT          Y
13         NUM_DISTINCT         NUMBER        Y
14         LOW_VALUE            VARBINARY(32) Y
15         HIGH_VALUE           VARBINARY(32) Y
16         DENSITY              NUMBER        Y
………………………… 此处省略过多的输出

在上面的输出中,我们很明显的就可以看出,DM7对于表名与列名的长度限制;当然,在实际生产环境中,很难碰到表的列名超过128个字节的情况,除非……(各位脑补吧);

二 总结

总结一下,对于各类数据库表名与字段名的长度限制要求,具体如下:

数据库 表名长度限制 字段名长度限制
oracle 30 30
mysql 64 64
db2 128 128
access 64 64
sqlserver 128 128
dm7 128 128
dm8 128 128

原文地址:https://blog.51cto.com/semiter/2448573

时间: 2025-01-16 07:25:43

DM7表名/字段名等对象的命名长度限制的相关文章

KO ------- 表中字段名和实体类属性名不一致

-----------------------siwuxie095 KO ------- 表中字段名和实体类属性名不一致 如果数据库表中的字段名和实体类的属性名不一致,那么在查询时, 相应字段的结果就会为空 (一)问题复现 1.先创建数据库 mybatis_db, 再创建表 t_user,并插入若干数据 注意:user_id 为主键,且为自动增长 2.创建实体类 User.java: package com.siwuxie095.entity; // 实体类 public class User

获取sqlserver数据库中所有库、表、字段名的方法

1.获取所有数据库名: SELECT Name from Master..SysDatabases ORDER BY Name 2.获取所有表名: SELECT Name from DatabaseName..SysObjects Where XType='U' ORDER BY Name XType='U':表示所有用户表; XType='S':表示所有系统表; 3.获取所有字段名: SELECT Name from SysColumns WHERE id=Object_Id('TableNa

删除约束名字段名

ALTER TABLE UserInfo DROP CONSTRAINT  DF__UserInfo__YJ_Win__2AC04CAA ALTER TABLE UserInfo   DROP COLUMN YJ_WinNum GO USE [hsh_db_2013_11_18] GO DECLARE @return_value int EXEC @return_value = [dbo].[p_SelectByPage]   @SelectList = N'*',   @TableSource

oracle表名、字段名等对象的命名长度限制

原创作品,出自 "深蓝的blog" 博客,欢迎转载,转载时请务必注明出处,否则追究版权法律责任. 深蓝的blog:http://blog.csdn.net/huangyanlong/article/details/45854385 今天在为某系统数据库结构整理升级脚本时,遇到了"命名字节过长的错误",类似于下面的截图语句: 由于升级的结构中对于字段名的命名根据业务进行了修改,出现了命名过长的情况. 这里想说一下,对于oracle,表名.字段名等对象命名字节个数限制在

SQL 查找表名 字段名

转载:http://www.accessoft.com/article-show.asp?id=6135 经常碰到一些忘记表名称的情况,此时只记得个大概,此时可通过查询系统表Sysobjects找到所要的表名,如要查找包含用户的表名,可通过以下SQL语句实现, Select * From sysobjects Where name like '%user%' 如果知道列名,想查找包含有该列的表名,可加上系统表syscolumns来实现,如想查找列名中包含有user的所有表名,可通过以下SQL语句

数据库的表名字段名大小写问题

今天发现它真的是一个问题. 拿我最喜欢的Oracle来说吧.一般情况下,建表不管大小写,建完表名.字段名总是大写的,这样你不得不在单词之间加下划线,从而增加了字段名长度,有时就超长了.在select的结果中显示也不美观.Oracle也支持以双引号括起来的字段名,不过,你可要注意啦,用"Ok"建的字段名用"OK"."ok"和Ok都是查不到的,必须用"Ok".我只想说一句,Oracle在这点上你就搞不懂用户的需求了吧.也许Orac

关于mysql的表名/字段名/字段值是否区分大小写的问题

http://www.2cto.com/database/201202/121253.html 1.mysql默认情况下是否区分大小写,使用show Variables like '%table_names'查看lower_case_table_names的值,0代表区分,1代表不区分. 2.mysql对于类型为varchar数据默认不区分大小写,但如果该字段以“*_bin”编码的话会使mysql对其区分大小写. 3.mysql对于字段名的策略与varchar类型数据相同.即:默认不区分大小写,

显示数据库的所有表名,字段名,库名

1.显示所有的表名: show tables from xxx 显示表的详细信息: desc xxx表名 2.显示所有的字段名,并用,号分割: select GROUP_CONCAT(column_name) from information_schema.columns where table_name= 'xxx表名'; 3.显示所有的数据库名: show databases

查询数据库所有(某个)表中字段名,数据类型,说明等

--查询数据库所有 SELECT (case when a.colorder=1 then d.name else null end) 表名, a.colorder 字段序号,a.name 字段名, isnull(g.[value], ' ') AS [说明] FROM syscolumns a left join systypes b on a.xtype=b.xusertype inner join sysobjects d on a.id=d.id and d.xtype='U' and