关于字母的大小写(100分)

  • 主题发起人 主题发起人 南宫慕容
  • 开始时间 开始时间

南宫慕容

Unregistered / Unconfirmed
GUEST, unregistred user!
用的是Delphi5/paradox

在做查询时,数据库的内容为:ABcde

输入的查询条件为:abcde或者ABCDE,查询不出结果,只能输入ABcde才能查询出来。
想实现的是:不管输入的字母是大写或者小写,都可以查出结果,能实现吗?
希望各位大虾不吝赐教
 
转换输入字母为大写字母, 取出数据库数据转换为大写, 比较!!
 
转换一次!uppercase()和lowercase()
s:='abcde'
结果是:
uppercase(s[1])+uppercase(s[2])+lowercase(s[3])+lowercase(s[4])+lowercase(s[5])
 
数据库的内容不定,字母可能是几个到几十个不等,难道要把这些字母一个一个的取出来
再转换?那岂不是。。。555,难道没有更好的办法?
 
真需要的话,StrUpper(Str: PChar)
pchar -- string 应该清楚吧
 
真不明白。
if UpperCase(VarStr)=UpperCase(Fieldbyname('XXX').AsString) 不就行了吗?
 
用的是Delphi5/paradox

在做查询时,数据库的内容为:ABcde
^^^^^^^^^^
问题可能在这里,你是如何做查询的,将代码列出来,大家看一下。

 
还要看看你数据库的字符集设置!
 
用 Local SQL 的 Upper 或 Lower 函数应该可以。
select * from TableName where Upper(StrField) = 'ABCD'
你查询时先把用户输入的条件转换成大写的或小写的,可以用 UpperCase 和 LowerCase
函数。
 
我的意思是:
字段:产品拼音代码'py'
这个字段的内容是可以让用户自己设置的,在用户设置的过程中,有可能用的是大写字母,
也有可能是小写字母。如:张三,可以是ZS,也可以是zs

用Tquery控件,SQL属性是这样的:
select * form "cp.db" cp where py=:p

在查询时:with query1 do
begin
close;
unprepare;
params[0].asstring:=edit1.text;
prepare;
open;
active:=true;
end;
在数据库中的实际内容是可能是ZS或者zs
想要实现:不管用户在edit1中输入的是大写字母ZS或者是小写字母zs都可以查询得出来

如果是使用uppercase或者lowercase函数的话,那么必须先要判断数据库里面的实际内容
是大写或者是小写,然后再转换!这样岂不是很麻烦?
难道非得要这样才能实现吗?
 
不用判断啊!不管数据库里的数据是大小写或混写,也不管用户输入的是大写小写或混写,
你把两边的数据都转成大写再作比较就行了。
使用UpperCase或使用Local SQL的Upper都可以。
 
把edit1的CharCase设为ecUpperCase
保证写入库的是大写,岂不更方便
 
Query 的 SQL 设为:
select * form "cp.db" cp where Upper(py)=:p
这样查询:
with query1 do
begin
close;
unprepare;
params[0].asstring:=UpperCase(edit1.text);
prepare;
open;
end;

 
madm都说了,我也不想班门弄斧了!
 
这问题正如楼上几位说的表达式两边都转换为大写或小写不就成了。
 
使用了bbkxjy的办法解决了问题
小菜可能也是这个意思,不过由于小弟水平有限没能理解
madm也提供了一个思路,但我是用DBGrid来作为输入媒介,所以。。。
不过非常感谢各位大虾的大力帮助,可惜分不多。。。
 
不会吧这个问题还要说那么多?我赞成小菜的想法.
 
用uppercase()或者lowercase()将数据都转换一下再比较
 
只要判断用户输入的字符的ASCII是不是在大小写字母之间就可以了。
 
对于paradox完全可以用 Local SQL 的 Upper 或 Lower 函数来实现。
select * from TableName where Upper(StrField) = 'ABCDE'
你查询时先把用户输入的条件转换成大写的或小写的,可以用 UpperCase 和 LowerCase
函数。

 
后退
顶部