我用ADOQuery写SQL语句,用like条件语句进行判断并要求区分大小写,可实际返回的结果不区分大小写,曾经看到一个朋友说用inStr,但仍无法解决,因为我的表很特殊,如下:
field1 field2 (表table1)
Si 发送
Ti 接收
I% 网通
s% 主叫
y% 直通
S% 被叫
%y 优惠
%i 连通
当字段field1的值为Si时对应'发送',值为Ti时对应'接收',值以I开头时对应'网通',值以s开头时对应'主叫',值以y开头时对应'直通车',值以S开头时对应'被叫',值以y结尾时对应'优惠',值以i结尾时对应'连通',等等。我的SQL语句为:ADOQuery1.sql.Add('select (select top 1 table1.field2 from table1 where table2.code like table1.field1) as codename from table2 ');
可惜查得的结果没有区分大小写(如:把S错误的对应到了'主叫')。其中表table1是我为了利用like语句而自建的,可以调整,但S对应'被叫'等对应关系都不允许更改。
有高手能解决上述问题吗?急用,万分感谢!!!
field1 field2 (表table1)
Si 发送
Ti 接收
I% 网通
s% 主叫
y% 直通
S% 被叫
%y 优惠
%i 连通
当字段field1的值为Si时对应'发送',值为Ti时对应'接收',值以I开头时对应'网通',值以s开头时对应'主叫',值以y开头时对应'直通车',值以S开头时对应'被叫',值以y结尾时对应'优惠',值以i结尾时对应'连通',等等。我的SQL语句为:ADOQuery1.sql.Add('select (select top 1 table1.field2 from table1 where table2.code like table1.field1) as codename from table2 ');
可惜查得的结果没有区分大小写(如:把S错误的对应到了'主叫')。其中表table1是我为了利用like语句而自建的,可以调整,但S对应'被叫'等对应关系都不允许更改。
有高手能解决上述问题吗?急用,万分感谢!!!
那时想大就大,想小就小了,以上意见仅供参考。
查询完后用COPY函数判断一下
with ADOQuery1 do
begin
first;
while not eof do
begin
if Copy(FieldByName('field1').asstring,1,1)='s' then
begin
... ...
end
else if Copy(FieldByName('field1').asstring,1,1)='S' then
begin
... ...
end;
next;
end;
end;
因为S%是表示所有以S开的数据,Si也在内啊。
因为s%是表示所有以s开的数据,si也在内啊。
所以在这个数据要求上的,这个数据设计是不对的。
使用一下SQL过程吧,要不就使用数据本地处理吧。
你说的用SQL过程或数据本地处理具体该如何操作呢?能详细说说或给个例子吗?谢谢!lxh00789朋友:
我的field1字段本来就是字符串类型呀,你说的是什么意思呢?
S1 > S2 > 0
S1 < S2 < 0
S1 = S2 = 0
Note: Most locales consider lowercase characters to be less than the corresponding uppercase characters. This is in contrast to ASCII order, in which lowercase characters are greater than uppercase characters. Thus,AnsiCompareStr('a','A')
returns a value less than zero, while
CompareStr('a','A')
returns a value greater than zero.