---
title: "5.5、多选改单选"
docId: "302236220614770688"
source: "https://weapp.eteams.cn/build/techdoc/wdoc/index.html#/public/repository/9c2e5f92-03b4-4207-9b22-a0c1dd79ac56/doc/302236220614770688"
---
先确认是否存在有多选的数据，有的话将其清理后再执行sql

-- 多选改单选，会造成原先的多选数据丢失不可逆，自行确认好能否切换

update form_field set single = 1,other_properties = replace(other_properties,'"isSingle":false','"isSingle":true') where id = 字段id;

update form_table_field set type_len = 64,column_type = 'VARCHAR' where field_id = 字段id;

-- 第三个sql不同数据库差异比较大：

-- mysql:

alter table 表名 change 字段名 字段名 varchar(64);

-- sqlserver：

alter table ws_test1 alter column xgryxx varchar(64);

-- oracle/达梦/神通：要新建中间字段，因为text不允许直接切varchar

alter table 表名 add 字段名_tmp varchar(64);

update 表名 set 字段名_tmp = 字段名;

-- 执行下面的这一步之前最好可以检查下字段数据是否已经迁移到新字段中

alter table 表名 drop column 字段名;

alter table 表名 rename column 字段名_tmp to 字段名;

-- 执行完成后，在页面上找个其他字段点一下保存，用于清理缓存
