Foxpro SELECT查询无法查找项目是不正确的

时间:2016-05-19 14:40:00

标签: foxpro

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

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

这将返回记录,但如果大小写错误,则不返回任何内容。 e.g。

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

不会产生任何结果。

当然,用户不应该知道他们正在搜索的记录的正确情况!?有人可以帮我这个吗?

由于 约翰

3 个答案:

答案 0 :(得分:1)

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

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

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

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

答案 1 :(得分:0)

我有时会用......

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

...或者,如果我正在尝试匹配变量或其他字段,我将使用...

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

...只是为了确保我得到完全匹配。

答案 2 :(得分:0)

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

再次感谢 约翰