一个表 [tbuser]
ID NAME INFO
1  aa11  t1
2  aa22  t1
3  bb33  t2
4  bb44  t2
5  cc55  t3
6  cc66  t3
7  cs2   b
8  ct5   b
9  xw6   b
10 12sre b问题:
找出所有以aa bb cc 开头的信息
例如
ID NAME INFO
1  aa11  t1
2  aa22  t1
3  bb33  t2
4  bb44  t2
......请教各位大神如何写SQL代码。
目前只能找出单个字段的数据,例如以aa开头的代码select t.* from tbuser t where substr(t.name,0,3) like 'aa%';

解决方案 »

  1.   

    WITH t AS (
    SELECT 1 ID,'aa11' NAME,'t1' INFO FROM dual
    UNION ALL 
    SELECT 2,'aa22', 't1' FROM dual
    UNION ALL
    SELECT 3, 'bb33', 't2' FROM dual
    UNION ALL
    SELECT 4, 'bb44', 't2' FROM dual
    UNION ALL
    SELECT 5, 'cc55', 't3'  FROM dual
    UNION ALL
    SELECT 6, 'cc66', 't3'  FROM dual
    UNION ALL
    SELECT 7, 'cs2', 'b'  FROM dual
    UNION ALL
    SELECT 8, 'ct5', 'b'  FROM dual
    UNION ALL
    SELECT 9, 'xw6', 'b'  FROM dual
    UNION ALL
    SELECT 10, '12sre', 'b'  FROM dual
    )SELECT * FROM t WHERE NAME LIKE 'aa%' OR NAME LIKE 'bb%' OR NAME LIKE 'cc%' ORDER BY id;ID NAME INFO
    1 aa11 t1
    2 aa22 t1
    3 bb33 t2
    4 bb44 t2
    5 cc55 t3
    6 cc66 t3
      

  2.   

    就截取2位不行么?
    select t.* 
    from tbuser t 
    where substr(t.name,0,2) in ('aa','bb','cc');
      

  3.   

    看楼主意思,莫非是这样的需求。select t.* 
    from tbuser t 
    where lengthb(t.name)>2 and substr(t.name,0,2) in ('aa','bb','cc');
      

  4.   

    我是LZ 如果表中不止aa bb cc开头 还有DD EE FF GG WW....等等之类的开头
    我想用循环读查出来。怎么做?
      

  5.   


    select t.* 
    from tbuser t 
    where substr(t.name,0,1)=substr(t.name,1,2);
      

  6.   


    select t.* 
    from tbuser t 
    where upper(substr(t.name,0,1))=upper(substr(t.name,1,2));