| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1666 人关注过本帖
标题:VFP9.0中用ALLT()的怪現象
只看楼主 加入收藏
GEORGECHIN
Rank: 2
等 级:论坛游民
帖 子:43
专家分:16
注 册:2009-8-25
结帖率:62.5%
收藏
已结贴  问题点数:20 回复次数:8 
VFP9.0中用ALLT()的怪現象
CREATE SQL VIEW V_TEMP_PARTNO1 AS SELE PART_NO.*;
    FROM CMADE!PART_NO INNER JOIN CMADE!FILELIST ON UPPER(ALLTRIM(PART_NO.料號))=ALLTRIM(UPPER(FILELIST.關鍵字));
    WHERE UPPER(ALLTRIM(FILELIST.文件類別))="工程料號" .AND. ALLT(UPPER(FILELIST.審核狀況))<>"Y";
    ORDER BY PART_NO.料號
注:以上這一段查出不任何數據

CREATE SQL VIEW V_TEMP_PARTNO1 AS SELE PART_NO.*;
    FROM CMADE!PART_NO INNER JOIN CMADE!FILELIST ON UPPER(ALLT(PART_NO.料號))=ALLTRIM(UPPER(FILELIST.關鍵字));
    WHERE UPPER(ALLTRIM(FILELIST.文件類別))="工程料號" .AND. UPPER(FILELIST.審核狀況)<>"Y";
    ORDER BY PART_NO.料號
注:以上這一段可以得到兩條符合的記錄

CREATE SQL VIEW V_TEMP_PARTNO1 AS SELE PART_NO.*;
    FROM CMADE!PART_NO INNER JOIN CMADE!FILELIST ON UPPER(ALLTRIM(PART_NO.料號))=ALLTRIM(UPPER(FILELIST.關鍵字));
    WHERE UPPER(ALLTRIM(FILELIST.文件類別))="工程料號" .AND. EMPT
(FILELIST.審核狀況)=.T.;
    ORDER BY PART_NO.料號
注:以上這一段可以得到兩條符合的記錄

CREATE SQL VIEW V_TEMP_PARTNO1 AS SELE PART_NO.*;
    FROM CMADE!PART_NO INNER JOIN CMADE!FILELIST ON UPPER(ALLT(PART_NO.料號))=ALLTRIM(UPPER(FILELIST.關鍵字));
    WHERE UPPER(ALLTRIM(FILELIST.文件類別))="工程料號" .AND.
UPPER(FILELIST.審核狀況)="Y";
    ORDER BY PART_NO.料號
注:以上這一段可以得到很多條符合的記錄
真的無比的驚訝,為什麼增加一個ALLT(刪除空字符,我用LTRI加上RTRI替換也是一樣的效果)就沒有記錄產生?在SQL語句中,是如何對空串操作及對運算符<>是如何進行比對的?
PS:數據源的"審核狀況"字段為字符型的空串,EXAC設置的是精確比較


[ 本帖最后由 GEORGECHIN 于 2009-9-5 01:26 编辑 ]
搜索更多相关主题的帖子: ALLT 
2009-09-05 01:17
yanglixin292
Rank: 1
等 级:新手上路
帖 子:4
专家分:2
注 册:2009-9-5
收藏
得分:0 
在SQL語句中空串也是字符串,和普通字符串的运算一样
2009-09-05 20:56
sd_tysd
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:81
专家分:319
注 册:2009-7-23
收藏
得分:0 
回复 楼主 GEORGECHIN
VFP9不是严格比较的情况下好只对前7个字符有效,超过7个字符就无效。但是如果用“==”进行比较时却有效,VFP9可能这个函数有问题。
2009-09-05 22:16
GEORGECHIN
Rank: 2
等 级:论坛游民
帖 子:43
专家分:16
注 册:2009-8-25
收藏
得分:0 
謝謝各位朋友的回貼,我當時也認為這是VFP的BUG,其實是我沒有弄清SQL的規則:
1.SQL中,空串等於任何字串.
2.SQL中,與SET EXACT設置無關.
2009-09-07 10:41
sd_tysd
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:81
专家分:319
注 册:2009-7-23
收藏
得分:0 
B=不在SQL中空串也等於任何字串.
2009-09-07 12:12
GEORGECHIN
Rank: 2
等 级:论坛游民
帖 子:43
专家分:16
注 册:2009-8-25
收藏
得分:0 
以下是引用sd_tysd在2009-9-7 12:12的发言:
B=不在SQL中空串也等於任何字串.
在SQL中,表達式:空串<>"   "及:空串<>"123455"返回假
2009-09-07 12:20
sd_tysd
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:81
专家分:319
注 册:2009-7-23
收藏
得分:0 
空格也是字符
2009-09-07 19:01
GEORGECHIN
Rank: 2
等 级:论坛游民
帖 子:43
专家分:16
注 册:2009-8-25
收藏
得分:0 
所謂的空串就是"",空格是" ",這兩個在SQL中如果用<>進行操作,其返回的是一個假值;用=操作,除非ANSI設置為ON,返回假,如果設置為OFF,返回真;用==操作返回假.即
""<>" "  不管如何設置都返回.F.
""=" "  ANSI ON返回.F. ANSI OFF,返回.T.
""==" " 不管如何設置都返回.F.
2009-09-08 22:36
ivf
Rank: 1
等 级:新手上路
帖 子:66
专家分:2
注 册:2009-3-14
收藏
得分:0 
回复 4楼 GEORGECHIN
请教下,空串等于任何字串是什么意思?
2018-08-17 17:48
快速回复:VFP9.0中用ALLT()的怪現象
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013025 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved