开关功能不可用';不能在access sql中工作
使用下面的代码,我正在尝试更新table开关功能不可用';不能在access sql中工作,sql,ms-access-2010,ansi-sql,ansi-sql-92,Sql,Ms Access 2010,Ansi Sql,Ansi Sql 92,使用下面的代码,我正在尝试更新tableK_tables。列ColumnType中没有零值或空值,但是在我运行这个脚本之后,我得到了很多空值行,并且具有特定值(例如BIGINT)的行数比预期的要多 update K_tables set ColumnType = Switch( ColumnType = 'I8' , 'BIGINT', ColumnType = 'I' , 'INTEGER',
K_tables
。列ColumnType
中没有零值或空值,但是在我运行这个脚本之后,我得到了很多空值行,并且具有特定值(例如BIGINT
)的行数比预期的要多
update K_tables set ColumnType = Switch(
ColumnType = 'I8' , 'BIGINT',
ColumnType = 'I' , 'INTEGER',
ColumnType = 'CF' , 'CHARACTER',
ColumnType = 'D' , 'DECIMAL',
ColumnType = 'I1' , 'BYTEINT',
ColumnType = 'I2' , 'SMALLINT',
ColumnType = 'DA' , 'DATE',
ColumnType = 'TS' , 'TIMESTAMP',
ColumnType = 'CV' , 'VARCHAR'
);
我的问题有问题吗 结果如何
SELECT ColumnType, COUNT(*) FROM K_tables GROUP BY ColumnType
我的猜测是,其中有一些值没有在SWITCH语句中提到?由于开关未给出任何结果,这些值将被强制为NULL
我只想添加一个WHERE子句
update
K_tables
set
ColumnType = Switch(
ColumnType = 'I8' , 'BIGINT',
ColumnType = 'I' , 'INTEGER',
ColumnType = 'CF' , 'CHARACTER',
ColumnType = 'D' , 'DECIMAL',
ColumnType = 'I1' , 'BYTEINT',
ColumnType = 'I2' , 'SMALLINT',
ColumnType = 'DA' , 'DATE',
ColumnType = 'TS' , 'TIMESTAMP',
ColumnType = 'CV' , 'VARCHAR'
)
WHERE
ColumnType IN ('I8','I', 'CF', 'D', 'I1', 'I2', 'DA', 'TS', 'CV')
;
这意味着您只更新符合条件的行,而不更新所有其他行。结果如何
SELECT ColumnType, COUNT(*) FROM K_tables GROUP BY ColumnType
我的猜测是,其中有一些值没有在SWITCH语句中提到?由于开关未给出任何结果,这些值将被强制为NULL
我只想添加一个WHERE子句
update
K_tables
set
ColumnType = Switch(
ColumnType = 'I8' , 'BIGINT',
ColumnType = 'I' , 'INTEGER',
ColumnType = 'CF' , 'CHARACTER',
ColumnType = 'D' , 'DECIMAL',
ColumnType = 'I1' , 'BYTEINT',
ColumnType = 'I2' , 'SMALLINT',
ColumnType = 'DA' , 'DATE',
ColumnType = 'TS' , 'TIMESTAMP',
ColumnType = 'CV' , 'VARCHAR'
)
WHERE
ColumnType IN ('I8','I', 'CF', 'D', 'I1', 'I2', 'DA', 'TS', 'CV')
;
这将意味着您只更新符合条件的行,而不更新所有其他行。我还将在第一个
选择-分组依据中包含计数(*)
,因为OP说出现的BIGINT
的数量大于预期。我不知道为什么,但是添加where in
行使查询按预期工作。我还将在第一个select-groupby
行中添加count(*)
,因为OP说出现的BIGINT
比预期的多。我不知道为什么,但添加where in
行使查询按预期工作。