我有一个表有几个可以为空的整数列.由于多种原因,这是不可取的,所以我希望将所有空值更新为0,然后将这些列设置为NOT NULL
.除了将空值更改为0
,必须保留数据.
我正在寻找特定的SQL语法来将列(调用它ColumnA
)改为" not null
".假设数据已更新为不包含空值.
使用SQL Server 2000.
我有一个表,其中一列是datetime类型的"Date".我们决定为该列添加默认约束
Alter table TableName
alter column dbo.TableName.Date default getutcdate()
Run Code Online (Sandbox Code Playgroud)
但这给了我错误:
"."附近的语法不正确
有没有人在这里看到任何明显错误的东西,我错过了(除了有一个更好的名称列)
我需要ALTER
表中几列的数据类型.
对于单个列,以下工作正常:
ALTER TABLE tblcommodityOHLC
ALTER COLUMN
CC_CommodityContractID NUMERIC(18,0)
Run Code Online (Sandbox Code Playgroud)
但是如何在一个语句中更改多个列?以下不起作用:
ALTER TABLE tblcommodityOHLC
ALTER COLUMN
CC_CommodityContractID NUMERIC(18,0),
CM_CommodityID NUMERIC(18,0)
Run Code Online (Sandbox Code Playgroud) 在PostgreSQL交互式终端中输入以下命令会导致错误:
ALTER TABLE tbl_name ALTER COLUMN col_name varchar (11);
Run Code Online (Sandbox Code Playgroud)
更改列的数据类型的正确命令是什么?
我正在使用SQL Server 2008,我需要在一个大约500k行的表上创建一个更大的VARCHAR字段,从(200到1200).我需要知道的是,如果有任何问题我没有考虑过.
我将使用此TSQL语句:
ALTER TABLE MyTable
ALTER COLUMN [MyColumn] VARCHAR(1200)
Run Code Online (Sandbox Code Playgroud)
我已经在数据的副本上试过了,这个陈述没有我能看到的不良影响.
这样做有什么可能的问题我可能没有考虑过吗?
顺便说一下,该列未编入索引.
今天我遇到了一个旧表,其中一个名为"Created"的日期时间列允许空值.现在,我想要更改它,使其为NOT NULL,并且还包含一个约束以添加默认值(getdate()).
到目前为止,我已经得到了以下脚本,只要我事先清理了所有空值,它就可以正常工作:
ALTER TABLE dbo.MyTable ALTER COLUMN Created DATETIME NOT NULL
Run Code Online (Sandbox Code Playgroud)
有没有办法在ALTER语句中同时指定默认值?
我试图将主键的列数据类型从int更改为tinyint.此列是其他表中的外键.因此,我收到以下错误:
消息5074,级别16,状态1,行1对象'PK_User_tbl'依赖于列'appId'.消息5074,级别16,状态1,行1对象'FK_Details_tbl_User_tbl'取决于列'appId'.消息5074,级别16,状态1,行1对象'FK_Log_tbl_User_tbl'取决于列'appId'.消息4922,级别16,状态9,行1 ALTER TABLE ALTER COLUMN appId失败,因为一个或多个对象访问此列.
除了删除依赖项并重新创建它们之外还有其他方法吗?
我正在使用MS SQL SERVER 2003.我想更改其中一个表中的列,以使条目中的字符更少.这与此问题相同:更改表列以接受更多字符,除了我想要更少字符而不是更多字符.
我的一个表中有一个列,其中包含九位数的条目.以前在该表上工作的开发人员错误地将该列设置为包含十位数的条目.我需要将类型更改CHAR(10)
为CHAR(9)
.
按照上面讨论的讨论说明,我写了这个声明
ALTER TABLE [MY_TABLE] ALTER COLUMN [MY_COLUMN] CHAR(9);
这将返回错误消息"字符串或二进制数据将被截断".我看到我的九位数字符串有一个空格,使它们成十个数字.
如何告诉SQL Server丢弃额外空间并将我的列转换为CHAR(9)类型?
所以我想更改我的SQL Server数据库中的列不允许空值,但我一直收到错误.这是我正在使用的sql语句:
alter table [dbo].[mydatabase] alter column WeekInt int not null
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误:
Msg 515, Level 16, State 2, Line 1
Cannot insert the value NULL into column 'WeekInt', table 'CustomerRadar.dbo.tblRWCampaignMessages'; column does not allow nulls. UPDATE fails.
The statement has been terminated.
Run Code Online (Sandbox Code Playgroud)
我很确定我的sql是正确的,并且我正在尝试更改的列中当前没有空值,所以我真的不确定导致问题的原因.有任何想法吗?我很难过.
我试图在MS Access中使用SQL查询执行以下语句;
ALTER TABLE [table] ALTER COLUMN [column] SET DEFAULT 'default value'
Run Code Online (Sandbox Code Playgroud)
但是,我得到一个显示错误的对话框 Syntax error in ALTER TABLE statement.
当我单击"确定"时,它会突出显示该单词DEFAULT
.我也尝试了以下声明;
ALTER TABLE [table]
ADD CONSTRAINT [Default] DEFAULT 'default value' FOR [column]
Run Code Online (Sandbox Code Playgroud)
我又得到了一个错误 Syntax error in CONSTRAINT clause.
在MS Access中设置默认值的正确语法是什么?db文件是Access 2003格式.
我有一个Column
声明为的列,NULL DEFAULT(GETUTCDATE())
并且有一个包含此列的非聚集索引.我想将此列更改为NOT NULL DEFAULT(GETUTCDATE())
,当我运行ALTER TABLE ALTER COLUMN
语句时,SQL Azure服务表示它无法更改列,因为根据此列有一个索引.
这是一个生产数据库,该表包含大约一千万条记录.所以我宁愿不删除并重新创建索引,因为这会降低数据库的速度(特别是创建索引可能需要几分钟).
如何在不重新创建索引的情况下更改列?
database sql-server alter-column database-indexes azure-sql-database
我正在尝试将列类型从"字符变化(15)"更改为整数.
如果我从tableY limit(10)运行"=#SELECT columnX"; 我回来了:
columnX
----------
34.00
12.00
7.75
18.50
4.00
11.25
18.00
16.50
Run Code Online (Sandbox Code Playgroud)
如果我运行"=#\ d + columnX"我会回来:
Column | Type | Modifiers | Storage | Description
columnX | character varying(15) | not null | extended |
Run Code Online (Sandbox Code Playgroud)
我已经搜索了高低,在postgresql irc频道上询问,但没有人能弄清楚如何改变它,我试过:
ALTER TABLE race_horserecord ALTER COLUMN win_odds TYPE integer USING (win_odds::integer);
Run Code Online (Sandbox Code Playgroud)
也:
ALTER TABLE tableY ALTER COLUMN columnX TYPE integer USING (trim("columnX")::integer);
Run Code Online (Sandbox Code Playgroud)
每次我回来:
"错误:整数的输入语法无效:"34.00""
任何帮助,将不胜感激.
我需要将列类型从tinyInt(用作bool)更改为Varchar,而不丢失数据。我在 stack-overflow 上找到了很多答案,但它们都是用 postgres 编写的,我不知道如何在 Mysql 中重写它。堆栈溢出问题的答案如下:
ALTER TABLE mytabe ALTER mycolumn TYPE VARCHAR(10) USING CASE WHEN mycolumn=0 THEN 'Something' ELSE 'TEST' END;
类似的逻辑在 Mysql 中会是什么样子?
alter-column ×13
alter-table ×9
sql-server ×7
sql ×5
t-sql ×3
null ×2
postgresql ×2
psql ×2
database ×1
default ×1
ms-access ×1
mysql ×1
varchar ×1