Foxpro SELECT 查询找不到项目是大小写不正确
Foxpro SELECT query cant find item is case isnt correct
我有一个带有 CustomerName 字段的 table。我有一条记录,其中 CustomerName 是 'CustomerABC' 我的 select 查询如下:
SELECT fieldA, fieldB, fieldC
from CustomersTable
WHERE CustomerName='CustomerABC'
这个returns记录但是如果大小写不对,就returns没什么。例如
SELECT fieldA, fieldB, fieldC
from CustomersTable
WHERE CustomerName='customerabc'
不会产生任何结果。
当然,用户不应该知道他们正在搜索的记录的正确大小写!?有人可以帮我解决这个问题吗?
谢谢
约翰
默认情况下,FoxPro 的 =
和 ==
运算符区分大小写,因此这会影响查询。但是,命令 SET COLLATE TO "GENERAL"
可用于更改行为,并允许 upper/lowercase 个字符在比较操作中匹配。
如果您想使用默认值并忽略大小写,请使用 UPPER() 或 LOWER() 函数转换字符串以进行比较。如果查询将在代码中执行(相对于命令 window 中的临时查询),将函数应用于比较的两侧通常是个好主意,除非您确定 table 以某种方式格式化。
SELECT fieldA, fieldB, fieldC
from CustomersTable
WHERE UPPER(CustomerName)=UPPER('customerabc')
此外,在使用字符串比较时,请考虑 SET EXACT
和 SET ANSI
设置的影响,因为它们控制填充字符串和不同长度字符串的行为。
我有时用...
ALLTRIM(UPPER(CustomerName)) == UPPER('customerabc')
... 或者,如果我尝试匹配变量或其他字段,我将使用 ...
ALLTRIM(UPPER(CustomerName)) == ALLTRIM(UPPER(SomeOtherField))
...只是为了确保我得到完全匹配。
感谢您的回复,看来我选择了一个明智的选择。在 UPPER 选择中(我的查询仍然非常快)我想我会坚持下去)。很高兴已经确认这就是 foxpro 的工作方式
再次感谢
约翰
我有一个带有 CustomerName 字段的 table。我有一条记录,其中 CustomerName 是 'CustomerABC' 我的 select 查询如下:
SELECT fieldA, fieldB, fieldC
from CustomersTable
WHERE CustomerName='CustomerABC'
这个returns记录但是如果大小写不对,就returns没什么。例如
SELECT fieldA, fieldB, fieldC
from CustomersTable
WHERE CustomerName='customerabc'
不会产生任何结果。
当然,用户不应该知道他们正在搜索的记录的正确大小写!?有人可以帮我解决这个问题吗?
谢谢 约翰
默认情况下,FoxPro 的 =
和 ==
运算符区分大小写,因此这会影响查询。但是,命令 SET COLLATE TO "GENERAL"
可用于更改行为,并允许 upper/lowercase 个字符在比较操作中匹配。
如果您想使用默认值并忽略大小写,请使用 UPPER() 或 LOWER() 函数转换字符串以进行比较。如果查询将在代码中执行(相对于命令 window 中的临时查询),将函数应用于比较的两侧通常是个好主意,除非您确定 table 以某种方式格式化。
SELECT fieldA, fieldB, fieldC
from CustomersTable
WHERE UPPER(CustomerName)=UPPER('customerabc')
此外,在使用字符串比较时,请考虑 SET EXACT
和 SET ANSI
设置的影响,因为它们控制填充字符串和不同长度字符串的行为。
我有时用...
ALLTRIM(UPPER(CustomerName)) == UPPER('customerabc')
... 或者,如果我尝试匹配变量或其他字段,我将使用 ...
ALLTRIM(UPPER(CustomerName)) == ALLTRIM(UPPER(SomeOtherField))
...只是为了确保我得到完全匹配。
感谢您的回复,看来我选择了一个明智的选择。在 UPPER 选择中(我的查询仍然非常快)我想我会坚持下去)。很高兴已经确认这就是 foxpro 的工作方式
再次感谢 约翰