2012-07-18 12 views
32

मैं एक चयन कथन में IIF() का उपयोग करने की कोशिश कर रहा हूं। बुलियन अभिव्यक्ति यह देखने के लिए जांचती है कि फ़ील्ड मान खाली स्ट्रिंग के बराबर है या नहीं।एसक्यूएल सर्वर 2008 आईआईएफ कथन सक्षम नहीं लगता

SELECT IIF(field = '','ONe action','Another') 

मैं

मैं एक साधारण परीक्षण की कोशिश की त्रुटि "के पास = सिंटैक्स त्रुटि" हो रही है:

SELECT IIF(2 > 1, 'yes','no') 

और मैं "syntax errror near >"

हो रही है वाक्य रचना इसलिए की तरह है यह मुझे विश्वास दिलाता है कि IIF बिल्कुल काम नहीं कर रहा है।

मैं SQL सर्वर 2008 R2 का उपयोग कर रहा हूं, क्या ऐसा कुछ है जिसे IIF() को काम करने की अनुमति देने के लिए कॉन्फ़िगर करने की आवश्यकता है? क्या सिंटैक्स के बारे में कुछ है जो मुझे याद आ रही है? मेरा परीक्षण सरल हो सकता है और मुझे अभी भी वाक्यविन्यास त्रुटि मिलती है।

किसी भी मदद की सराहना की जाएगी। बहुत धन्यवाद!

+3

यह 2012 के लिए नया है –

उत्तर

61

जैसा कि उल्लेख किया गया है, IIF एक SQL2012 सुविधा है।

बदलें अपनी एक CASE साथ IIF (जो है SQL 2012 वैसे भी क्या करेंगे)

SELECT CASE field WHEN '' THEN 'ONe action' ELSE 'Another' END 
11

IIFintroduced in SQL Server 2012 था, इसलिए यही कारण है कि यह SQL Server 2008 या SQL Server 2008 R2 में काम नहीं करता है।

25

IFF एसक्यूएल सर्वर 2012 से शुरू तो 'केस' के बजाय का उपयोग उपलब्ध है।

आप देख रहे हैं एसक्यूएल सर्वर 2008 में एक और अधिक ठोस रूप (बजाय मामले का कार्य) के लिए आप का उपयोग कर सकते हैं:

isnull((select 'yes' where 2 > 1),'no') 

के बजाय:

SELECT IIF(2 > 1, 'yes','no') 

फिर अपने बयान होगा हो:

SELECT isnull((select 'yes' where 2 > 1),'no')

1
DECLARE @a int=45 

DECLARE @b int=40 

SELECT 
     CASE 
     WHEN @A>@B THEN 'True' 

ELSE 'FALSE'   
     END 

आप IIF के बजाय इस समाधान का उपयोग कर सकते हैं।

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