查询里A表字段中包含B表字段问题
比如 AA表如
xh  shengccj
1   河南羚锐生物药业                                  
2   四川蜀中制药有限公司                              
3   海口奇力制药BB表 
xh  shengccj
1   河南羚锐生物
1   河南中杰药业                                     
2   四川蜀中制药
2   海口奇力制药
3   河南中杰药业 
我想查询 的条件为 A表xh=b表xh   a表中shengccj 必须在b表中shengccj的
结果为
xh shengccj
1   河南羚锐生物药业                                  
2   四川蜀中制药有限公司    
我是这么写的   select a.xh,b.shengccj from AA a,BB b where a.xh=b.xh and a.shengccj like '%'+b.shengccj+'%'
但得出的结果为空 那里错了呢  正确应该怎么写 求指教
                            
                               

解决方案 »

  1.   

    USE tempdb
    GO
    CREATE TABLE AA 
    (
    xh INT,
    shengccj VARCHAR(100)
    )
    INSERT INTO AA
    SELECT 1, '河南羚锐生物药业'
    UNION ALL 
    SELECT 2, '四川蜀中制药有限公司'
    UNION ALL 
    SELECT 3, '海口奇力制药'CREATE TABLE BB 
    (
    xh INT,
    shengccj VARCHAR(100)
    )
    INSERT INTO BB
    SELECT 1, '河南羚锐生物'
    UNION ALL 
    SELECT 1, '河南中杰药业'
    UNION ALL 
    SELECT 2, '四川蜀中制药'
    UNION ALL 
    SELECT 2, '海口奇力制药'
    UNION ALL 
    SELECT 3, '河南中杰药业'select a.xh,A.shengccj from AA a,BB b where a.xh=b.xh and a.shengccj like '%'+b.shengccj+'%'用你原有的代码也不为空啊。我在你select中的shengccj换成a表的,这样才会是你想要的。
    结果:
    xh          shengccj
    ----------- ---------
    1           河南羚锐生物药业
    2           四川蜀中制药有限公司(2 行受影响)
      

  2.   

    根据你提供的数据以及sql语句,结果是不会为空的。我想你之所以会为空,可能是你数据库里的数据和你提供的数据有出入,你自己检查下先
      

  3.   

    CREATE TABLE AA 
    (
        xh INT,
        shengccj VARCHAR(100)
    )
    INSERT INTO AA
    SELECT 1, '河南羚锐生物药业'
    UNION ALL 
    SELECT 2, '四川蜀中制药有限公司'
    UNION ALL 
    SELECT 3, '海口奇力制药'CREATE TABLE BB 
    (
        xh INT,
        shengccj VARCHAR(100)
    )
    INSERT INTO BB
    SELECT 1, '河南羚锐生物'
    UNION ALL 
    SELECT 1, '河南中杰药业'
    UNION ALL 
    SELECT 2, '四川蜀中制药'
    UNION ALL 
    SELECT 2, '海口奇力制药'
    UNION ALL 
    SELECT 3, '河南中杰药业'
    GO
    --开始查询
    --1
    select a.xh,a.shengccj from AA a left join BB b  on  a.xh=b.xh  where   b.shengccj like substring(a.shengccj,1,6)
    --2
    select a.xh,a.shengccj from  AA a ,BB b where a.xh=b.xh and b.shengccj like left(a.shengccj,6)
    --3
    select a.xh,a.shengccj from AA a,BB b where a.xh=b.xh and a.shengccj like '%'+b.shengccj+'%' --这个也可以出结果啊
    /*
    -----------------------------------------------------------------------
    xh    shengccj
    1     河南羚锐生物药业   
    2     四川蜀中制药有限公司(2 行受影响)
    ------------------------------------------------------------------------
    */
      

  4.   


    IF EXISTS (SELECT 1 FROM SYSOBJECTS WHERE name = 'AA')
    BEGIN
        DROP TABLE AA
    END
    GO
    CREATE TABLE AA
    (
        xh INT,
        shengccj VARCHAR(100)
    )
    GO
    INSERT INTO AA
    SELECT 1, '河南羚锐生物药业' UNION  
    SELECT 2, '四川蜀中制药有限公司' UNION    
    SELECT 3, '海口奇力制药'
    GO
    IF EXISTS (SELECT 1 FROM SYSOBJECTS WHERE name = 'BB')
    BEGIN
        DROP TABLE BB
    END
    GO
    CREATE TABLE BB
    (
        xh INT,
        shengccj VARCHAR(100)
    )
    GO
    INSERT INTO BB
    SELECT 1, '河南羚锐生物' UNION
    SELECT 1, '河南中杰药业' UNION   
    SELECT 2, '四川蜀中制药' UNION
    SELECT 2, '海口奇力制药' UNION
    SELECT 3, '河南中杰药业'
    GO
    SELECT AA.*
    FROM AA INNER JOIN BB ON AA.xh = BB.xh AND CHARINDEX(BB.shengccj,AA.shengccj) > 0xh    shengccj
    1    河南羚锐生物药业
    2    四川蜀中制药有限公司