[英]If Else Statement in SQL Server stored procedure not working
我在這里有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.BBB(WaferLotNo)-> PPLT2.01(僅讀取第一個9個字符,如果第9個字符是點,則省略點。
PQ1H3.1。 ----> PQ1H3.1(省略最后一個點)
PQ1H。 ----> PQ1H。 (省略最后一個點)
您需要根據長度進行子字符串化。
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
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.