5,557
社区成员
![](https://csdnimg.cn/release/cmsfe/public/img/topic.427195d5.png)
![](https://csdnimg.cn/release/cmsfe/public/img/me.40a70ab0.png)
![](https://csdnimg.cn/release/cmsfe/public/img/task.87b52881.png)
![](https://csdnimg.cn/release/cmsfe/public/img/share-circle.3e0b7822.png)
在使用FDBatchMove导入数据时,会遇到excel表中的字段为Null值,我想把它变为 '' ,我尝试了:
str1:=‘select isnull(字段,'') as 字段 from [表$]’;
str2:='insert into 表(字段) values(:字段)';
FDBatchMoveSQLReader1.ReadSQL := str1;
FDBatchMoveSQLWriter1.WriteSQL := str2;
应对str1的字段,结果报错,好像执行时并不认为 isnull(字段,'') as 字段 是一个字段。换成:
str1:=‘select 字段 from [表$]’;
就没有问题,但是导入的字段有的为Null,后续处理起来很麻烦。
我用 select isnull(字段,'') as 字段 from [表] 在SQL环境测试是没有问题的。
有什么方法实现吗?
用数据表的原始字段判断赋值的类型,通用导入格式完成,数字为空=0字符为空=“”日期为空=NULL,搞定。
提示,不能使用字段的Datatype,不准确,会赋值错误,看看MSSQL和delphi数据类型对照表就知道了。要使用
SELECT data_type FROM INFORMATION_SCHEMA.columns
字符型判断。
我勒个去,竟然是:
str2:='insert into 表(字段) values(isnull(:字段,''''))';
看来是理解错误了,应该是select出来的是字段,values用的是赋值。
搞定。