有A表,表中有如下记录:
sheath_no          wt drum_no           type
SSH0111111111         200 WF1A1230 GYTA-24B1
SSH0111111111.01 100 WF1A1234 GYTA-24B1有B表,表中有如下记录:
sheath_no coloring    serial_no att1310 att1550  pmd
SSH0111111111 blue                1 0.318 0.191       0.023
SSH0111111111 orange                2 1.318 1.191       1.023
SSH0111111111 green                3 2.318 2.191       2.023
SSH0111111111 brown                4 3.318 3.191       3.023
SSH0111111111 grey                5 4.318 4.191       4.023
SSH0111111111 white                6 5.318 5.191       5.023现想得到如下结果:sheath_no          wt drum_no           type       coloring serial_no  att1310 att1550  pmd
SSH0111111111.01 100 WF1A1234 GYTA-24B1 blue 1    0.318 0.191 0.023
SSH0111111111.01 100 WF1A1234 GYTA-24B1 orange 2    1.318 1.191 1.023
SSH0111111111.01 100 WF1A1234 GYTA-24B1 green 3    2.318 2.191 2.023
SSH0111111111.01 100 WF1A1234 GYTA-24B1 brown 4    3.318 3.191 3.023
SSH0111111111.01 100 WF1A1234 GYTA-24B1 grey 5    4.318 4.191 4.023
SSH0111111111.01 100 WF1A1234 GYTA-24B1 white 6    5.318 5.191 5.023SSH0111111111两个表中是对应的,用这个查询简单,但用SSH0111111111.01不知能不能查询,如果能查得话,该如何写。谢谢

解决方案 »

  1.   

    Sql语法教程
      

  2.   

    你把小数点后的去掉即可.如果是sql server则如下:select a.* , b.* from a , b where (case when charindex(sheath_no,'.') > 0 then a.sheath_no = left(b.sheath_no , charindex(sheath_no,'.') - 1) else a.sheath_no = b.sheath_no end)
      

  3.   

    --如果是oracle则如下:select a.* , b.* from a , b where (case when instr('.',sheath_no) > 0 then a.sheath_no = substr(b.sheath_no , 1, instr('.',sheath_no) - 1) else a.sheath_no = b.sheath_no end)
      

  4.   

    A 表中的两条记录是什么关系?为何排除第一条记录,而其 sheath_no 字段值又与表 B 中记录相同?规则是什么?
      

  5.   

    A表中的第二条记录是在第一条的基础上加了“.01”,也有可能加上“.02”或“.03”等。
    现在目的就是要用A表中的sheath_no为SSH0111111111.01查询出A表中的记录和B表中sheath_no为SSH0111111111的多条记录。
      

  6.   

    --sql server
    select a.* , b.* from a , b where 
    (charindex(sheath_no,'.') > 0 and a.sheath_no = left(b.sheath_no , charindex(sheath_no,'.') - 1)) or (charindex(sheath_no,'.') = 0 and a.sheath_no = b.sheath_no)--oracle
    select a.* , b.* from a , b where (instr('.',sheath_no) > 0 and a.sheath_no = substr(b.sheath_no , 1, instr('.',sheath_no) - 1)) or (instr('.',sheath_no) = 0 and a.sheath_no = b.sheath_no)