SWITCH 功能在访问中不起作用 sql
SWITCH function doesn't work in access sql
使用下面的代码,我正在尝试更新 table 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 语句中有没有提到的值?由于 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')
;
这意味着您只更新符合您条件的行,而保留所有其他行。
使用下面的代码,我正在尝试更新 table 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 语句中有没有提到的值?由于 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')
;
这意味着您只更新符合您条件的行,而保留所有其他行。