我在这里有3个条件。
我在存储过程中使用If else语句。我使用Substring来获得第一个9个字符。对于第一个两个条件,结果看起来不错,但对于第三个条件却不起作用。
DECLARE @ShortWaferLotNo VARCHAR(50)
set @ShortWaferLotNo = SUBSTRING(@WaferLotNo, 0, 10);
if RIGHT(@ShortWaferLotNo, 1) = '.'
begin
set @ShortWaferLotNo = SUBSTRING(@WaferLotNo, 0, 9);
end
else if RIGHT(@ShortWaferLotNo, 1) = '.'
begin
set @ShortWaferLotNo = STUFF(@WaferLotNo,DATALENGTH(@WaferLotNo), 1, '')
end
else
begin
set @ShortWaferLotNo=''
end
PPLT2.01.B.B.B(WaferLotNo)-> PPLT2.01(仅读取第一个9个字符,如果第9个字符是点,则省略点。
PQ1H3.1。 ----> PQ1H3.1(省略最后一个点)
PQ1H。 ----> PQ1H。 (省略最后一个点)
答案 0 :(得分:0)
您需要根据长度进行子字符串化。
DECLARE @ShortWaferLotNo VARCHAR(50)
select @ShortWaferLotNo = 'PQ1H3.1.'
set @ShortWaferLotNo = SUBSTRING(@ShortWaferLotNo, 0, 10)
print @ShortWaferLotNo
if RIGHT(@ShortWaferLotNo, 1) = '.'
begin
set @ShortWaferLotNo = SUBSTRING(@ShortWaferLotNo, 0, len(@ShortWaferLotNo));
end
else
begin
set @ShortWaferLotNo=''
end
print @ShortWaferLotNo
答案 1 :(得分:0)
I managed to solve it like below :
begin
declare @WaferLotNo as varchar(100)
declare @ShortWaferLotNo as varchar(100)
select @WaferLotNo='PJY.9.B.B.' --PQ1H3.1.
if DATALENGTH(@WaferLotNo)>=9
set @ShortWaferLotNo = SUBSTRING(@WaferLotNo, 0, 10);
if RIGHT(@ShortWaferLotNo, 1) = '.'
begin
set @ShortWaferLotNo = SUBSTRING(@WaferLotNo, 0, 9);
end
if DATALENGTH(@WaferLotNo)<9
set @ShortWaferLotNo = SUBSTRING(@WaferLotNo, 0, 9);
if RIGHT(@ShortWaferLotNo, 1) = '.'
begin
set @ShortWaferLotNo = STUFF(@WaferLotNo,DATALENGTH(@WaferLotNo), 1, '')
end
end
print @ShortWaferLotNo