स्तर नेस्ट किया जा सकता है मैं इस तरह ऑस्ट्रेलिया +61
, 61
, 001161
के लिए देश कोड के रूप में फोन नंबर से निपटने के लिए निम्न कोड आदि समस्या यह है कि मुझे लगता है मैं अब और के तहत किसी भी CASE
बयान सम्मिलित नहीं कर सकते हैं: CASE WHEN LEFT(@BPartyNo, 4) = '+610'
प्रकरण भाव केवल 10
कहा जाता है कि प्रकरण भाव केवल स्तर 10
मैं इस TSQL कैसे को कारगर है तो मैं अधिक मामले रख सकते हैं करने के लिए नेस्ट किया जा सकता है?
USE [TelcoStage_PROD]
GO
/****** Object: UserDefinedFunction [dbo].[ufn_stg_ProperBPartyNoExtra] Script Date: 07/12/2010 15:27:52 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--=====================================================================================================================
-- OBJECT NAME : dbo.ufn_stg_ProperBPartyNoExtra
-- INPUTS : @BPartyNo
-- OUTPUTS : VARCHAR(32)
-- RETURN CODES : N/A
-- DEPENDENCIES : N/A
-- DESCRIPTION : This function is used to get the extra after 10 character (MNET or S)
--
-- EXAMPLES (optional) : N/A
--
-- HISTORY:
-- #-----------------------------------------------------------------------------------------------------------------
-- # DATE | VERSION | MODIFIED BY | DESCRIPTION
-- #-----------------------------------------------------------------------------------------------------------------
====================================================================================================================
ALTER FUNCTION [dbo].[ufn_stg_ProperBPartyNoExtra](@BPartyNo AS VARCHAR(MAX))RETURNS VARCHAR(32)
AS
BEGIN
DECLARE @Return VARCHAR(32);
SET @Return = '';
IF (LEN(@BPartyNo) > 0)
SELECT @Return = CASE WHEN LEFT(@BPartyNo, 4) = '+610' THEN SUBSTRING('0' + SUBSTRING(@BPartyNo, 5, LEN(@BPartyNo)), 11, LEN('0' + SUBSTRING(@BPartyNo, 5, LEN(@BPartyNo)))) ELSE
CASE WHEN LEFT(@BPartyNo, 3) = '+61' THEN SUBSTRING('0' + SUBSTRING(@BPartyNo, 4, LEN(@BPartyNo)), 11, LEN('0' + SUBSTRING(@BPartyNo, 4, LEN(@BPartyNo)))) ELSE
CASE WHEN LEFT(@BPartyNo, 2) = '61' THEN SUBSTRING('0' + SUBSTRING(@BPartyNo, 3, LEN(@BPartyNo)), 11, LEN('0' + SUBSTRING(@BPartyNo, 3, LEN(@BPartyNo)))) ELSE
CASE WHEN LEFT(@BPartyNo, 6) = '001161' THEN SUBSTRING('0' + SUBSTRING(@BPartyNo, 7, LEN(@BPartyNo)), 11, LEN('0' + SUBSTRING(@BPartyNo, 7, LEN(@BPartyNo)))) ELSE
CASE WHEN (LEFT(@BPartyNo,2) = '01' AND LEN(@BPartyNo) > 10) THEN SUBSTRING(@BPartyNo, 11, LEN(@BPartyNo)) ELSE
CASE WHEN (LEFT(@BPartyNo,2) = '02' AND LEN(@BPartyNo) > 10) THEN SUBSTRING(@BPartyNo, 11, LEN(@BPartyNo)) ELSE
CASE WHEN (LEFT(@BPartyNo,2) = '03' AND LEN(@BPartyNo) > 10) THEN SUBSTRING(@BPartyNo, 11, LEN(@BPartyNo)) ELSE
CASE WHEN (LEFT(@BPartyNo,2) = '04' AND LEN(@BPartyNo) > 10) THEN SUBSTRING(@BPartyNo, 11, LEN(@BPartyNo)) ELSE
CASE WHEN (LEFT(@BPartyNo,2) = '07' AND LEN(@BPartyNo) > 10) THEN SUBSTRING(@BPartyNo, 11, LEN(@BPartyNo)) ELSE
CASE WHEN (LEFT(@BPartyNo,2) = '08' AND LEN(@BPartyNo) > 10) THEN SUBSTRING(@BPartyNo, 11, LEN(@BPartyNo)) ELSE '' END
END
END
END
END
END
END
END
END
END;
ELSE
SELECT @Return = '';
RETURN @Return
END
'कोडेका' हार्डिंग: इसके लिए धन्यवाद। मुझे एहसास नहीं हुआ कि मैंने घोंसला नहीं किया है। क्लाइंट के कारण स्ट्रिंग मैनिपुलेशन के लिए मुझे इस स्तर पर करना है वास्तव में एसक्यूएल के साथ ही ईटीएल प्रक्रिया भी है। – dcpartners
@ dewacorp.alliances: ouch :-) –