问几个SQL语法的问题。

YewPu 2009-04-22 09:26:08
1、原有设计某字段不可为空,现在要用语法将他设为空(最好有附带判断条件,即判断其是否可以为空,如果不行就执行);
2、判断某个表是否存在,如果不存在,则建立,建表语法;
3、判断某字段是否存在,如果不存在则新增,或有些字段存在则删除;
注意:以上语法都必须在不影响原有数据的情况下执行;

以上问题都是因为已经发行出成品,现在必须在升级版本中将用语法将其更新;
...全文
180 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
YewPu 2009-05-10
  • 打赏
  • 举报
回复
老大,帮忙解决啊.
YewPu 2009-05-10
  • 打赏
  • 举报
回复
多谢楼上的.
Doane 2009-05-10
  • 打赏
  • 举报
回复
1 alter table table1 ALTER COLUMN abc decimal(9,2) null

这个就是
YewPu 2009-05-04
  • 打赏
  • 举报
回复
谁告诉我?
sjlion 2009-04-22
  • 打赏
  • 举报
回复
hxbkkk好热心啊
hxbkkk 2009-04-22
  • 打赏
  • 举报
回复
1 alter table table1 ALTER COLUMN abc decimal(9,2) null
2 select count(id) into :ll_bz from dbo.sysobjects where name = 'fyt_tj_wcettjb';
if ll_bz = 0 then
ls_alter='CREATE TABLE dbo.fyt_tj_wcettjb (tjjd varchar(8) NOT NULL,tjdwbh varchar (20) NOT NULL ,'+&
'tjdwmc varchar (30),jb varchar (1)NOT NULL,xys numeric(8, 0),yis numeric(8, 0) DEFAULT (0),'+&
'ers numeric(8, 0)DEFAULT (0),sans numeric(8, 0) DEFAULT (0),sis numeric(8, 0) DEFAULT (0),'+&
'wus numeric(8, 0) DEFAULT (0),lius numeric(8, 0) DEFAULT (0),qis numeric(8, 0) DEFAULT (0),'+&
'wzmy numeric(8, 0) DEFAULT (0),tjnf varchar (4) NOT NULL)'
execute immediate :ls_alter;
if sqlca.sqlcode <> 0 then
messagebox('创建表失败fyt_tj_wcettjb',sqlca.sqlerrtext)
else
commit;
end if
end if
3 select count(name)into :ll_bz from syscolumns where id in (select id from sysobjects where name = '表名')
and name = '字段名';
if ll_bz = 0 then
ls_alter = "alter table 表名 add 字段名 varchar(1)"
execute immediate :ls_alter;
if sqlca.sqlcode <> 0 then
messagebox('增加字段失败flag1',sqlca.sqlerrtext)
else
commit;
end if
else
ls_alter = "alter table 表名 DROP 字段名 "
execute immediate :ls_alter;
if sqlca.sqlcode <> 0 then
messagebox('增加字段失败flag1',sqlca.sqlerrtext)
else
commit;
end if

end if
sun1976 2009-04-22
  • 打赏
  • 举报
回复
如果原来可空的改为不能空还好
如果原来不能空的改为可控不好,可能程序里必须用这个值,又没有对空值进行判断处理
所以建议以后不想再维护的原来的不可空的字段你直接给增加default就行了
sun1976 2009-04-22
  • 打赏
  • 举报
回复
查询分析器查帮助alter table
YewPu 2009-04-22
  • 打赏
  • 举报
回复
在企业管理器里都不能将字段设为空啊,语法是什么?
sun1976 2009-04-22
  • 打赏
  • 举报
回复
随便找个介绍sql的书看看就行了
和简单的
或者你可以通过企业管理器右键找到生成脚本,带删除语句的就行了,参照着自己写
加字段查帮助alter table可以不判断有没有,每一句后面加go就行了。已有的就不会重复加,会出错误信息
想不影响数据,就不要删除字段
YewPu 2009-04-22
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 hxbkkk 的回复:]
1 alter table table1 ALTER COLUMN abc decimal(9,2) null
2 select count(id) into :ll_bz from dbo.sysobjects where name = 'fyt_tj_wcettjb';
if ll_bz = 0 then
ls_alter='CREATE TABLE dbo.fyt_tj_wcettjb (tjjd varchar(8) NOT NULL,tjdwbh varchar (20) NOT NULL ,'+&
'tjdwmc varchar (30),jb varchar (1)NOT NULL,xys numeric(8, 0),yis numeric(8, 0) DEFAULT (0),'+&
'ers numeric(8, 0)DEFAULT (0),san…
[/Quote]
你说的就是缺少了将非空的字段设成可以空.这个我是必须的啊!]

SUM1976,很感谢的指导.但你这样说了等于没说.

1,079

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧