SQLite如何向现有表追加基于某列长度计算的新列?
解决方法:新增列存储指定列的字符长度
方案1:直接修改原表(追加新列)
如果要在现有MyTable中新增一列存储A列的字符长度,分两步操作:
- 首先添加新列(比如命名为
A_length):
ALTER TABLE MyTable ADD COLUMN A_length INT;
- 然后更新新列的值,填充A列的字符长度:
UPDATE MyTable SET A_length = LENGTH(A);
注意:你之前写的
LENGTH("A")是错误的,双引号包裹的"A"是字符串常量,不是列名,应该直接写LENGTH(A)引用列。
方案2:创建包含新列的新表(替代原表)
如果想用CREATE TABLE AS SELECT创建带新列的新表,正确语法需要包含原表的所有列,同时新增计算列:
CREATE TABLE NewMyTable AS SELECT A, B, C, LENGTH(A) AS A_length FROM MyTable;
如果之前执行这条语句报错,大概率是以下原因:
- 误用了引号包裹列名(比如写成
LENGTH("A")) - 数据库对列名/表名的语法要求(比如某些数据库需要用反引号包裹特殊名称,不过这里名称都是常规的)
- 遗漏了原表的部分列,导致语法不完整
内容的提问来源于stack exchange,提问作者JCJC
相关产品推荐
相关产品推荐

