Foxpro SELECT查询找不到项目,因为大小写不正确



我有一个带有CustomerName字段的表。我有一条记录,其中CustomerName是"CustomerABC",我选择的查询如下:

   SELECT fieldA, fieldB, fieldC
from CustomersTable
WHERE CustomerName='CustomerABC'

这将返回记录,但如果情况错误,则不返回任何内容。例如

    SELECT fieldA, fieldB, fieldC
from CustomersTable
WHERE CustomerName='customerabc'

不会产生任何结果。

当然,用户不应该知道他们正在搜索的记录的正确大小写!?有人能帮我做这个吗?

谢谢John

默认情况下,FoxPro的===运算符区分大小写,因此这将影响查询。但是,命令SET COLLATE TO "GENERAL"可用于更改行为,并允许在比较操作中匹配大小写字符。

如果要使用默认和忽略大小写,请使用UPPER()或LOWER()函数转换字符串以进行比较。如果查询将在代码中执行(与命令窗口中的特殊查询相比),通常最好将函数应用于比较的两侧,除非您确信表中的数据是以某种方式格式化的。

SELECT fieldA, fieldB, fieldC
from CustomersTable
WHERE UPPER(CustomerName)=UPPER('customerabc')

此外,在使用字符串比较时,请考虑SET EXACTSET ANSI设置的影响,因为它们控制填充字符串和不同长度字符串的行为。

我有时会使用。。。

ALLTRIM(UPPER(CustomerName)) == UPPER('customerabc') 

或者,如果我试图匹配一个变量或另一个字段,我将使用。。。

ALLTRIM(UPPER(CustomerName)) == ALLTRIM(UPPER(SomeOtherField))

只是为了确保我能准确匹配。

感谢您的回复,因为我似乎选择了一个明智的选择。在UPPER选项中(我的查询仍然很快),我想我会坚持这个)。很高兴已经证实这就是foxpro的工作原理

再次感谢John

相关内容

最新更新