Foxpro9.0里 select 查询语句中 left函数嵌套atc函数后出现错误结果

不使用ATC函数嵌套selectleft(chg_id,6)fromCHGDTLbWHEREb.CHG_id='F12-20735-0685'显示结果:F12-02使用A... 不使用ATC函数嵌套
select left(chg_id,6) from CHGDTL b WHERE b.CHG_id='F12-20735-0685'

显示结果:F12-02
使用ATC函数嵌套后
select LEFT(chg_id,ATC('735',chg_id)-1) from CHGDTL b WHERE b.CHG_id='F12-20735-0685'

显示结果:F
请问这是为什么呢?
展开
 我来答
xplong82
2012-10-11 · TA获得超过970个赞
知道小有建树答主
回答量:1058
采纳率:0%
帮助的人:942万
展开全部
CHG_id='F12-20735-0685'

? LEFT(chg_id,ATC('735',chg_id)-1)
显示 F12-02

————————————————————————
说明 LEFT(chg_id,ATC('735',chg_id)-1) 表达式是正确的。

问题出在 select LEFT(chg_id,ATC('735',chg_id)-1) 这一部分,它在初始化时不知道这个表达式会输出多少个字符,它只输出了一个字符,所以结果是显示 F

使用VFP 要避免 输出未知长度的字段。
追问
谢谢!
ATC('735',chg_id)-1中的“chg_id"是一个表的字段,属于变量,ATC('735',chg_id)本身返回一个数量,再传递给left()函数。

单独使用ATC('735',chg_id)确实能返回正常数值,但两个函数一嵌套,返回值就变成了1,始终只取”chg_id"字段的首字符。
请指教。。。
追答
CHG_id='F12-20735-0685'

? LEFT(chg_id,ATC('735',chg_id)-1)
显示 F12-02

说明 LEFT(chg_id,ATC('735',chg_id)-1) 表达式是正确的。

问题出在 select
它工作时,首先要初始化一个空表来 接收 执行的结果,由于它不能正确的预测LEFT(chg_id,ATC('735',chg_id)-1) 输出的字符串长度,到致了不能输出正确的表。

这种效果类似于:
表A的字段 F1 为字符型 长度为2
表B的字段 F1 为字符型 长度为6 其中有一行为 “张有为”
执行 :
use A
append from B
? A.F1

显示: 张
BHYYSJH
2012-10-12 · TA获得超过124个赞
知道小有建树答主
回答量:188
采纳率:0%
帮助的人:111万
展开全部
语法没问题,你把电脑屏幕的结果 截图看看,结果是 F12-02。
或者把 ATC 改成 AT 试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dongweibh
2012-10-12
知道答主
回答量:6
采纳率:0%
帮助的人:7162
展开全部
一楼正解。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
scshang
2012-10-10
知道答主
回答量:4
采纳率:0%
帮助的人:6207
展开全部
迷糊了!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式