关于在sql中使用len()函数的出错的疑问

seav 2008-05-06 12:10:49
q1.close;
q1.sql.clear;
q1.sql.add('update table1 set 开始时间=left(开始时间,len(开始时间)-1)');
q1.open;

以上语句一运行,就会出错,提示 len里面的参数类型出错,请问len在这种情况下是怎样使用的?我试过
len("开始时间")这样写的话,得到不是实际字段内容的长度,而是“开始时间”这四个中文的长度.

望各位帮帮忙。
...全文
342 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
seav 2008-05-06
  • 打赏
  • 举报
回复
开始时间是字符类型
wangxuelid 2008-05-06
  • 打赏
  • 举报
回复


select getdate()
/*
2008-05-06 12:24:05.733
*/

select left(replace(replace(replace (Convert(varchar(24),getdate(),120),':',''),'-',''),' ',''),len(getdate())-4)
/*
20080506124205
*/
RoverX 2008-05-06
  • 打赏
  • 举报
回复
开始时间 字段不是字符
genispan 2008-05-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 xu_zhixiang 的回复:]
q1.close;
q1.sql.clear;
q1.sql.add('update table1 set 开始时间=left(convert(varchar(10),开始时间,120),len(convert(varchar(10),开始时间,120),)-1)');
q1.open;
[/Quote]
hsmserver 2008-05-06
  • 打赏
  • 举报
回复
Len()返回的是字符串类型的长度,日期类型的肯定不行了,转换一下
xu_zhixiang 2008-05-06
  • 打赏
  • 举报
回复
q1.close;
q1.sql.clear;
q1.sql.add('update table1 set 开始时间=left(convert(varchar(10),开始时间,120),len(convert(varchar(10),开始时间,120),)-1)');
q1.open;
dh9450 2008-05-06
  • 打赏
  • 举报
回复
取汉字的长度 用datalength()
ACCESS很多都不支持 不如在程序里处理
MarkRour 2008-05-06
  • 打赏
  • 举报
回复
本人才从VB转过来,新手,好象在SQL语句中如果出现变量表术是非常麻烦的,必须先将"开始时间"读如变量,该变量在SQL中表述时候不加引号
var
T:string
begin
T:=ado1.['开始时间'].asstring;
//下面再利用T开始你的查找
end;

才开始学习,思路应该没问题,只是语句的表述可能不正确
seav 2008-05-06
  • 打赏
  • 举报
回复
按以上方法,也出错了。提示Convert没有定义

我用的是access+ado

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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