现在有两个表,结构如下:
  表一:邮政编码,姓名,地址,段名
  表二:段名,路名
表一中的段名为空,地址字段是详细地址,如:南京市国庆西路53号301室;
表二是将全市按区域划分为若干段,如国庆东路,国庆西路,江苏路,山西路等等为1段,
鼓楼南路,鼓楼北路,南京路,珠江路等等为2段,中华巷,迎幸东巷,银杏新村等等为3段
现在要求将表一根据地址字段按照表二的划分来更新段名字段的值,具体程序或者sql语句该怎么写?分不够可以再加!

解决方案 »

  1.   

    Update 表1 set 段名=(Select 表2.段名 from 表2 where CharIndex(表2.路名,表1.地址)>0)
      

  2.   

    显示错误:表达式中CharIndex函数未定义!
      

  3.   

    sqlserver2000查询分析器中测试如下:--drop table t1
    --drop table t2set nocount on
    create table t1 (s1 varchar(50) ,s2 varchar(50),s3 varchar(50),s4 varchar(50))insert into t1 values('523650','张一','南京市国庆西路53号301室','')
    insert into t1 values('523650','张二','南京市珠江路53号301室','')
    insert into t1 values('523650','张三','南京市迎幸东巷53号301室','')
    create table t2 (s4 varchar(50),s5 varchar(50))insert into t2
    select '1','国庆东路'
    union
    select '1','国庆西路'
    union
    select '1','江苏路'
    union
    select '1','山西路'
    union
    select '2','鼓楼南路'
    union
    select '2','鼓楼北路'
    union
    select '2','南京路'
    union
    select '2','珠江路'
    union
    select '3','中华巷'
    union
    select '3','迎幸东巷'
    union
    select '3','银杏新村'select * from t1
    select * from t2
    update t1 set t1.s4=t2.s4 from t1 inner join t2 on PATINDEX('%'+t2.s5+'%',t1.s3)>0
    select * from t1……………………………………………………
    结果:s1         s2         s3                             s4    
    ---------- ---------- ------------------------------ ----- 
    523650     张一         南京市国庆西路53号301室                 
    523650     张二         南京市珠江路53号301室                  
    523650     张三         南京市迎幸东巷53号301室                 s4    s5                             
    ----- ------------------------------ 
    1     国庆东路
    1     国庆西路
    1     江苏路
    1     山西路
    2     鼓楼北路
    2     鼓楼南路
    2     南京路
    2     珠江路
    3     银杏新村
    3     迎幸东巷
    3     中华巷s1         s2         s3                             s4    
    ---------- ---------- ------------------------------ ----- 
    523650     张一         南京市国庆西路53号301室        1
    523650     张二         南京市珠江路53号301室          2
    523650     张三         南京市迎幸东巷53号301室        3
      

  4.   

    在adoquery中的sql语句该怎么写呢?PATINDEX函数还是未定义啊
      

  5.   

    在delphi中具体的程序及sql语句应该怎么写啊?
      

  6.   

    用的数据库不同,使用的sql语句也就不同吗?
    用access,显示错误:表达式中CharIndex函数未定义!
    用sqlserver就可以了吗?
      

  7.   

    用access数据库 没有CharIndex 应该是instr函数
    但是将查询改为
    Update 表1 set 段名=(Select 表2.段名 from 表2 where instr(表2.路名,表1.地址)>0)
    执行显示“请使用一个可更新的查询”错误 请问为什么啊?该怎么办啊?