数据库A表中有X(主键) a1 a2 a3 a4 a5列
x为递增序号,a1--a5是0-10之间的11个数字的其中5个(不重复,没顺序)现有三个textbox,一个button,在3个textbox输入0-10之间三个不重复的数字,button单击行为时找出同时出现在3个textbox输入的数字的行!并赋值给datalist。
给段sql部分的代码吧,不想啃书了~头晕
例如
x值为001
a1 为1
a2 为2
a3 为3
a4 为4
a5 为5
 textbox1 输入1
textbox2 输入3
textbox3 输入5button单击时表格 显示出   001  1 2 3 4 5textbox1 输入9
textbox2 输入3
textbox3 输入5显示空值求这段代码!

解决方案 »

  1.   


    select t.* from A t inner join (select '|'+a1+'|'+a2+'|'+a3+'|'+a4+'|'+a5 +'|' as str where x=t.x) B on charindex('|'+'1'+'|',B.str)>0 and charindex('|'+'3'+'|',B.str)>0 and charindex('|'+'5'+'|',B.str)>0
      

  2.   

    select t.* from A t inner join (select '|'+a1+'|'+a2+'|'+a3+'|'+a4+'|'+a5 +'|' as str from A where x=t.x) B on charindex('|'+'1'+'|',B.str)>0 and charindex('|'+'3'+'|',B.str)>0 and charindex('|'+'5'+'|',B.str)>0
      

  3.   

    CREATE TABLE a(x INT IDENTITY(1,1),a1 INT, a2 INT, a3 INT, a4 INT, a5 INT)
    INSERT dbo.a
    SELECT 1,2,3,4,5
    INSERT dbo.a
    SELECT 5,4,3,2,1
    --插入两条记录
    SELECT  *
    FROM    dbo.a
    WHERE   STR(a1) + STR(a2) + STR(a3) + STR(a4) + STR(a5) LIKE '%1%3%5%'
    --如果a1到a5从小到大排列这样就行
    /*
    x           a1          a2          a3          a4          a5
    ----------- ----------- ----------- ----------- ----------- -----------
    1           1           2           3           4           5(1 行受影响)
    */SELECT  m1.*
    FROM    dbo.a m1
    WHERE   CHARINDEX('1', STR(a1) + STR(a2) + STR(a3) + STR(a4) + STR(a5)) > 0
            AND EXISTS ( SELECT 1
                         FROM   dbo.a m2
                         WHERE  m2.x = m1.x
                                AND CHARINDEX('3',
                                              STR(a1) + STR(a2) + STR(a3) + STR(a4)
                                              + STR(a5)) > 0
                                AND EXISTS ( SELECT 1
                                             FROM   dbo.a m3
                                             WHERE  m3.x = m2.x
                                                    AND CHARINDEX('5',
                                                                  STR(a1) + STR(a2)
                                                                  + STR(a3)
                                                                  + STR(a4)
                                                                  + STR(a5)) > 0 ) )--a1-a5无序排列
    /*
    x           a1          a2          a3          a4          a5
    ----------- ----------- ----------- ----------- ----------- -----------
    1           1           2           3           4           5
    2           5           4           3           2           1(2 行受影响)
    */
    DROP TABLE dbo.a
      

  4.   

    3楼的无顺搜索 --正解。感谢CHARINDEX??
    貌似大学的时候没学过这语句...
    又貌似学过
    反正我看懂了2楼的仁兄貌似正解。。不过有点复杂,暂时没看明白 
      

  5.   

    我的复杂是因为加了限定符  | 
    否则
    当输入
    0  3 5时
    会把
    10 3 5也当成正确答案取出来。加了限定符后
    charindex验证  |0|与|10| 就会不通过