--Access
select *
from 表B
where ',' + aa + ',' like '*,1,*'
--other
select *
from 表B
where ',' + aa + ',' like '%,1,%'

解决方案 »

  1.   

    不用like就只有用sql语句里的charindex()函数了
      

  2.   

    select *
    from 表B
    where ',' + aa + ',' like '*,1,*'
    --other
    select *
    from 表B
    where ',' + aa + ',' like '%,1,%'
    select * from 表b where charindex('1,',aa)>0 or charindex(',1,',aa)>0 or charindex(',1',aa)>0 or charindex('2,',aa)>0 or charindex(',2,',aa)>0 or charindex(',2',aa)>0
      

  3.   

    表B中包含1的行或包含2行,语句:
    select * from b 
    where charindex(','+'1'+',', ','+aa+',')>0 
    or charindex(','+'2'+',', ','+aa+',')>0
    但是,这种语句没效率,索引利用率很低. 应该更改表B存储
    表B数据
    1     1
    1     2
    1     3
    2     1
    2     2
    3     3
    .......
    这样,用数值型存储. 这叫用数据冗余换取效率.
      

  4.   

    select * from b 
    where charindex(','+'1'+',', ','+aa+',')>0 
    or charindex(','+'2'+',', ','+aa+',')>0////////////////////////////////////
    请问要是有数据为 1,2,3 或 1,2
    你这样会查出来吗?
      

  5.   

    没看懂, 表A是干什么用的, 与B的关系。
    查询结构只能与包含数字匹配?
    用LIKE与数据多有什么关系。呵呵, LZ需求提得太简单了,表达不够准确。