select 邮编 from 表名 where 街道=substring('十里店14号',1,len(街道))
解决方案 »
- 关于截获程序封包的问题
- 咨询下,和FilleOpen,FileRead,SetFilePointer函数配合使用的获取文件指针位置的配对函数?
- 关于其他程序里控件的句柄问题!请大侠帮忙!
- 用ShellExecute 打开的外部程序,如果关闭父进程?
- 求教:ord函数的相反函数是什么?如何把string型'A'转为char型'A'
- 我们想做交换机方案的呼叫中心,熟悉交换机的朋友介绍用什么交换机好!
- 一个简单的网络传输问题
- 0怪哉,DLL中不能包含多个窗体
- ★★★CSDN结贴联盟第11次信誉提问!!★★★
- 用数字的奇偶位求校验码的问题
- 那个地方可以Down到最新的《Delphi Informan magzine》
- Delphi 7 正式版 Crack 提供下载
1). 门牌;
2). 楼数;
3). 大楼名称
4). 区分
.... 等等
然後逐个字段输入资料. 再用'区分'来查相对的'邮编'
Delphi的 LookupCombo 就是专做那样的工作的.
若有在此基礎上想實現此功能,用一個sql語句,好像難以實現
給點思路給你:
不知你資料表中 "街道"的欄位是多長,有幾種可能
610051 十里店
610066 十七街
610021 石佛寺街
610031 石灰街
"街道"的欄位有8,6 byte;所以說有多少種可能的長度你就需要寫多少語句來判斷
以你給的數據為例:1) select 邮编 from 表名 where 街道=substring(sInStr,1,8) //sInStr是你輸入的----十里店14号;
2) select 邮编 from 表名 where 街道=substring(sInStr,1,6) //sInStr是你輸入的----十里店14号;請注意sql語句的執行順序是1->2;
也就是說先執行語句1,若找到則返回(2就不用執行);
若沒有找到則執行2,若找到則返回;若沒有找到,則表示沒有相應的區號我這里只是以你的例子來說明;可能實際情況不僅僅是8,6 Byte;所以你要做相應的修改暫時還沒有想到好方法,共同學習
select 邮编 from 表名 where (length('输入值')> length(街道) and xqbh=substr('输入值',1,length(街道)))
or (length('输入值') < length(街道) and xqbh like '%输入值%')
var:
ls_streetaddress:string;
zip_code:string;
begin
with query do
begin
close;
sql.clear;
sql.add('select * from 表名');
open;
first;
end;
while not query.eof do
begin
if pos(query.fields[1].asstring,ls_streetAddress)>0 then
zip_code:=query.fields[0].asstring;
query.next;
end;
end;
数据库该如何改,街道名只能这样了,客户给的数据也是这样。数据库中街道名的长度也不定,问题还没搞定。
现在正在试用substr!
谢谢大家关心。
给分给分,谢谢大家的关心帮助。