以前に以下の記述されたコードを投稿し、エラーを削除して正しいコードを取得しましたが、私の基準は満たされていません。以下は、パラメーターとして渡される生データです。
2007:10113:/I/69071/MLI/Eldridge
その見返りとして、出力は「69071」である必要があります。このため、以下の関数を指定しましたが、出力を取得できません。また、他の要件を満たすために他の条件を維持しているので、助けてください。
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON --2007:10113:/I/69071/MLI/Eldridge
go
ALTER FUNCTION [dbo].[Empnum] (@RAWDATA NVARCHAR(300))
RETURNS VARCHAR(30)
AS
BEGIN
DECLARE @TEMP1 NVARCHAR(300), @EMPNUM NVARCHAR(10), @TEMP2 NVARCHAR(300), @TEMP3 NVARCHAR(300)
SET @TEMP3 = 'Disabled'
SET @EMPNUM=''
SET @TEMP2 = @RAWDATA
IF( CHARINDEX(@TEMP3,@RAWDATA,1) = 0)
BEGIN
-- SET @EMPNUM='11'
IF ISNUMERIC(SUBSTRING(@RAWDATA,1,1)) = 1
BEGIN
--
IF((LEN(@RAWDATA) - LEN(REPLACE(@TEMP2,'/','')))>1)
BEGIN
SET @RAWDATA=SUBSTRING(@RAWDATA,CHARINDEX('/',@RAWDATA)+1,LEN(@RAWDATA))
SET @RAWDATA=SUBSTRING(@RAWDATA,CHARINDEX('/',@RAWDATA)+1,LEN(@RAWDATA))
SET @RAWDATA=SUBSTRING(@RAWDATA,1,CHARINDEX('/',@RAWDATA)-1)
IF( CHARINDEX('*C',@RAWDATA) = 0 OR
CHARINDEX('CV',@RAWDATA) = 0 OR
CHARINDEX('AV',@RAWDATA) = 0 OR
CHARINDEX('LV',@RAWDATA) = 0 )
BEGIN
SET @EMPNUM = ''
RETURN @EMPNUM
END
ELSE
BEGIN
IF ISNUMERIC(SUBSTRING(@RAWDATA,1,1)) = 1
BEGIN
SET @EMPNUM = @RAWDATA
RETURN @EMPNUM
END
ELSE
IF((SUBSTRING(@RAWDATA,1,1)='C') AND ISNUMERIC(SUBSTRING(@RAWDATA,2,1)) = 1)
BEGIN
SET @EMPNUM = SUBSTRING(@RAWDATA,2,LEN(@RAWDATA))
RETURN @EMPNUM
END
END
END
END
END
RETURN @EMPNUM
END