2013-04-09 15 views
7

मैं नेस्टेड के परिणाम के आधार पर '0' या '1' को वापस करने के लिए एक फ़ंक्शन बना रहा हूं, तो अन्य बयान। एमएसएसक्यूएल का उपयोग करनाअगर अन्यथा कथन

ALTER FUNCTION udf_check_names_starting_with_quotationmark 
(@string NVARCHAR(100)) 
RETURNS INT 
AS 
BEGIN 
    DECLARE @condition INT 
    SET @string = LTRIM(@string) 
    SET @string = RTRIM(@string) 

    IF (PATINDEX('"%', @string) !=0) 
    BEGIN 
     SET @condition = 1 
    END 
    ELSE IF (PATINDEX('%"%', @string) !=0) 
    BEGIN 
     SET @condition=1 
    END 
    ELSE IF (PATINDEX('%"', @string) !=0) 
    BEGIN 
     SET @condition = 1 
    END 
    ELSE 
    BEGIN 
     SET @condition=0 
    END 
    RETURN @condition 
END 

सब कुछ ठीक से काम कर रहा है। क्या यह हासिल करने का एक बेहतर तरीका है (मैंने OR का उपयोग करने का प्रयास किया है लेकिन SQL संपादक एक त्रुटि दिखा रहा है, OR को पहचान नहीं रहा है)।

उत्तर

6
SET @condition = (case when PATINDEX('"%', @string) !=0 or 
          PATINDEX('%"%', @string) !=0 or 
          PATINDEX('%"', @string) !=0 then 1 else 0 end) 
+0

धन्यवाद? आप इस मदद के लिए बहुत कुछ .. मैं केस के साथ खेल रहा था लेकिन इसे काम करने के लिए नहीं मिला, मेरा बुरा .. धन्यवाद .. –

3

निश्चित रूप से यह करने के लिए सरल किया जा सकता है:

IF (PATINDEX('%"%', @string) !=0) 
    BEGIN 
     SET @condition=1 
    END 
    ELSE 
    BEGIN 
     SET @condition=0 
    END 

- PATINDEX('%"%', @string) के बाद से> 0 जहां या तो PATINDEX('"%', @string) या PATINDEX हो जाएगा ('% "', @string) कर रहे हैं> 0

+0

धन्यवाद के लिए धन्यवाद .. –

संबंधित मुद्दे