如:
班级1 班级3 班级3 班级4 班级1 班级6查询结果应该要是:
1
3
3
4
1
6难道要一个个循环去查?或者把几个select语句加成一个长字符串查?
更好的办法是什么?

解决方案 »

  1.   

    select replace(col,'班级','') as id from tb
      

  2.   


    select 
    班级=replace(substring('班级1 班级3 班级3 班级4 班级1 班级6',number,
    charindex(' ','班级1 班级3 班级3 班级4 班级1 班级6'+' ',number)- number),'班级','')
    from master..spt_values
    where type='p'  and number between 1 and len('班级1 班级3 班级3 班级4 班级1 班级6')
    and substring(' '+'班级1 班级3 班级3 班级4 班级1 班级6',number,1)=' ' 
      

  3.   

    你的意思是查数字?用函数
    --提取数字
    IF OBJECT_ID('DBO.GET_NUMBER2') IS NOT NULL
    DROP FUNCTION DBO.GET_NUMBER2
    GO
    CREATE FUNCTION DBO.GET_NUMBER2(@S VARCHAR(100))
    RETURNS VARCHAR(100)
    AS
    BEGIN
    WHILE PATINDEX('%[^0-9]%',@S) > 0
    BEGIN
    set @s=stuff(@s,patindex('%[^0-9]%',@s),1,'')
    END
    RETURN @S
    END
    GO
    --测试
    PRINT DBO.GET_NUMBER('呵呵ABC123ABC')
    GO
    --123
    --------------------------------------------------------------------
      

  4.   

    非常谢谢哈。我要查的是班级ID。在一张班级表中,班级ID为主键,还有班级名等列。
    我从excel文件中读取了一批班级名,要转成一批相对应的班级ID。班级表:
    ID |班级名
    5  |软件G30701
    6  |软件G30702
    7  |网络W30811假设有一批班级名: 
    软件G30701
    软件G30702
    软件G30701
    网络W30811
    网络W30811
    网络W30811
    软件G30702
    软件G30701
    网络W30811
    网络W30811
    .....现在要得到相应班级ID,结果应该是:
    5
    6
    5
    7
    7
    7
    6
    5
    7
    7
      

  5.   


    SELECT * FROM 班级名 LEFT JOIN 班级表 ON 班级名.班级名=班级表.班级名不知道我理解的意思对不对,好像有点太简单了
      

  6.   

    select a.id
    from 班级表 a,
    OpenRowSet('MICROSOFT.JET.OLEDB.4.0','EXCEL 8.0;HDR=YES;IMEX=2;DataBase=c:\test.xls',[sheet1$]) b
    where a.班级名=b.班级名