在FDBatchMove中如何将Null设置为 '' 值

秋天之落叶 2024-01-04 17:56:46

 在使用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环境测试是没有问题的。

有什么方法实现吗?

...全文
254 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
秋天之落叶 2024-01-12
  • 打赏
  • 举报
回复

用数据表的原始字段判断赋值的类型,通用导入格式完成,数字为空=0字符为空=“”日期为空=NULL,搞定。
提示,不能使用字段的Datatype,不准确,会赋值错误,看看MSSQL和delphi数据类型对照表就知道了。要使用
SELECT data_type FROM INFORMATION_SCHEMA.columns
字符型判断。

秋天之落叶 2024-01-04
  • 打赏
  • 举报
回复

我勒个去,竟然是:
str2:='insert into 表(字段) values(isnull(:字段,''''))';
看来是理解错误了,应该是select出来的是字段,values用的是赋值。
搞定。

daigua1987 2024-01-05
  • 举报
回复
@秋天之落叶 插入想null值变空值,可以在数据库表里面设置一个空值的默认值
秋天之落叶 2024-01-06
  • 举报
回复
@daigua1987 没找到设置,请教在哪里设置?
daigua1987 2024-01-06
  • 举报
回复
@秋天之落叶 第一设置一个默认值'' create table cs( ID int, a varchar(20) DEFAULT '', b varchar(10) ) 这是创建案例,第二写一个触发器 只要是Null 就修改成'' create trigger UpdateNull on cs for Insert,Update as begin update a set a.a='' from cs a inner join inserted b on a.ID=b.Id where b.a is null end

5,929

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧