order子句中能不能用right函数?

aikill 2004-11-08 04:45:36
为什么select right(aa,4) from t1 能执行
而select aa from t1 order by right(aa,4)不能执行?
...全文
157 24 打赏 收藏 举报
写回复
24 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
fj_jiangqi 2004-11-09
  • 打赏
  • 举报
回复
一定是在vfp下执行的吧,vfp命令行执行的是非标准sql语句,它里头几乎可以包含所有的vfp函数。
-----------------------------
我流落在凄凉的世界里-孤苦伶仃
我过着动荡无助的生活-四处漂泊
我在死亡线上苦苦挣扎-度日如年
aikill 2004-11-09
  • 打赏
  • 举报
回复
既然没有那么这样的语句select *,right(aa,4) as orderfield from t1 order by orderfield
为什么又能执行呢?
fj_jiangqi 2004-11-09
  • 打赏
  • 举报
回复
在sql里没看到right这个函数,可能是这个原因造成的吧。
-----------------------------
我流落在凄凉的世界里-孤苦伶仃
我过着动荡无助的生活-四处漂泊
我在死亡线上苦苦挣扎-度日如年
aikill 2004-11-09
  • 打赏
  • 举报
回复
这个我都明白,就是不知道这样用select aa from t1 order by right(aa,4)为什么不行呢?
有谁能解释一下吗?
fj_jiangqi 2004-11-09
  • 打赏
  • 举报
回复
我前面用的是标准的SQL语句,你可以试试看,||是字符串相加的意思。
-----------------------------
我流落在凄凉的世界里-孤苦伶仃
我过着动荡无助的生活-四处漂泊
我在死亡线上苦苦挣扎-度日如年
aikill 2004-11-09
  • 打赏
  • 举报
回复
楼上的兄弟说的好像有道理,不知道那几位说能执行的兄弟是否真的测试过了?
boomit 2004-11-09
  • 打赏
  • 举报
回复
在vfp6中好象order by right()不能执行,sele right() ....这样肯定行,因为前面的列可以加函数。。。在其它版本就不知道了。


aikill 2004-11-09
  • 打赏
  • 举报
回复
说我的内容有问题,那为什么
select *,right(aa,4) as orderfield from t1 order by orderfield
又能排序呢?
xclzteb 2004-11-09
  • 打赏
  • 举报
回复
是你的right(aa,4)内容有问题,不能排序,仔细检查一下你的表内容。
LAIYANGPJ 2004-11-09
  • 打赏
  • 举报
回复
TO:楼主
我试过不光是ORDER BY就是GROUP BY也不行.
aikill 2004-11-09
  • 打赏
  • 举报
回复
看来只能放弃了
LAIYANGPJ 2004-11-09
  • 打赏
  • 举报
回复
我试过了,不行,你要用RIGHT()排序的话除非:(在8.0里好用)这里的表名为BB吧!
SELECT DISTINCT A.* FROM BB A,(SELECT RIGHT(AA,4) AS AAK,* FROM BB) B WHERE A.AA=B.AA ORDER BY A.AAK
fj_jiangqi 2004-11-09
  • 打赏
  • 举报
回复
你试了不行就是不行,这个问题只能去查查vfp odbc driver是否有提供你所要的功能。没有原因的,这个原因只有开发那个驱动系统的部门才可能知道。这个部门可能是在美国,算了,你不要去用那个功能吧。电脑上常会遇到这样的事,忍着点吧
-----------------------------
我流落在凄凉的世界里-孤苦伶仃
我过着动荡无助的生活-四处漂泊
我在死亡线上苦苦挣扎-度日如年
aikill 2004-11-09
  • 打赏
  • 举报
回复
还是不知道为什么不能执行呀
fj_jiangqi 2004-11-09
  • 打赏
  • 举报
回复
应该是不行,不过也说不准。毕竟那个driver带了一个vfp.
-----------------------------
我流落在凄凉的世界里-孤苦伶仃
我过着动荡无助的生活-四处漂泊
我在死亡线上苦苦挣扎-度日如年
aikill 2004-11-09
  • 打赏
  • 举报
回复
是在vb下通过vfp odbc driver执行的.
fj_jiangqi 2004-11-08
  • 打赏
  • 举报
回复
select aa,substr(' '||aa,length(aa)-4) as aar4 from t1 order by aar4

select aa,substr(' '||aa,length(' '||aa)-4) as aar4 from t1 order by aar4
-----------------------------
我流落在凄凉的世界里-孤苦伶仃
我过着动荡无助的生活-四处漂泊
我在死亡线上苦苦挣扎-度日如年
fj_jiangqi 2004-11-08
  • 打赏
  • 举报
回复
select aa,substr(aa,length(aa)-4) as aar4 from t1 order by aar4

select aa,substr(' '||aa,length(aa)-4) as aar4 from t1 order by aar4
-----------------------------
我流落在凄凉的世界里-孤苦伶仃
我过着动荡无助的生活-四处漂泊
我在死亡线上苦苦挣扎-度日如年
fj_jiangqi 2004-11-08
  • 打赏
  • 举报
回复
也可以尝试改成select aa,right(aa,4) as aar4 from t1 order by aar4
或select aa from (select aa,right(aa,4) as aar4 from t1 order by aar4)
-----------------------------
我流落在凄凉的世界里-孤苦伶仃
我过着动荡无助的生活-四处漂泊
我在死亡线上苦苦挣扎-度日如年
LAIYANGPJ 2004-11-08
  • 打赏
  • 举报
回复
这个语句没问题,除非是你把数据表中字段的内容或结构与SELECT语句弄的对应不上,这SELECT就找不到这个RIGTH()了.
加载更多回复(4)
相关推荐
发帖
VFP

2573

社区成员

VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
帖子事件
创建了帖子
2004-11-08 04:45
社区公告
暂无公告