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)=' '
你的意思是查数字?用函数 --提取数字 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 --------------------------------------------------------------------
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)=' '
--提取数字
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
--------------------------------------------------------------------
我从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
SELECT * FROM 班级名 LEFT JOIN 班级表 ON 班级名.班级名=班级表.班级名不知道我理解的意思对不对,好像有点太简单了
from 班级表 a,
OpenRowSet('MICROSOFT.JET.OLEDB.4.0','EXCEL 8.0;HDR=YES;IMEX=2;DataBase=c:\test.xls',[sheet1$]) b
where a.班级名=b.班级名