টি-এসকিউএল-তে কি কোনও টেরিনারি শর্তসাপেক্ষ অপারেটর রয়েছে?


112

নিম্নলিখিত কোয়েরি বাস্তবায়নের বিকল্পগুলি কী:

select *  
from table  
where isExternal = @type = 2 ? 1 : 0

4
অবশ্যই, আপনি আপনার শিরোনামে যে প্রশ্নটির উত্তর দিয়েছেন তা অবশ্যই - অবশ্যই। BETWEENঅপারেটর তিনটি আর্গুমেন্ট নিতে সংজ্ঞায়িত করা হয়। আপনি যা খুঁজছিলেন তা শর্তসাপেক্ষ অপারেটর - যা একমাত্র অপারেটর হিসাবে সংঘটিত হয় যা বেশিরভাগ ভাষার দ্বারা সংজ্ঞায়িত তিনটি যুক্তি গ্রহণ করে to
ড্যামিয়েন_আ_বিশ্বাসীরা

1
@ জেএফএ - না, একটি টার্নারি অপারেটর এমন কোনও অপারেটর যা তিনটি অপারেন্ড নেয়। বেশিরভাগ ভাষায়, যদি তাদের কোনও ত্রিনিরি অপারেটর থাকে তবে এটি সাধারণ যে তাদের কেবল একটি রয়েছে, যাকে (সাধারণত) শর্তসাপেক্ষ অপারেটর বলা হয়। জিনিসকে ভুল নামে কল করা (বা কোনও সাধারণ নাম যখন আপনি নির্দিষ্ট বোঝাতে চান) কেবল আরও বিভ্রান্তির কারণ হতে পারে। আরও নির্দেশের জন্য, দয়া করে টের্নারি-অপারেটর ট্যাগ উইকির পরামর্শ নিন ।
ড্যামিয়েন_আ_বিশ্বাসীরা

@Damien_The_Unbeliever en.wikipedia.org/wiki/Ternary_operation : দেখুন "তিন অপারেটর"
টিমোথি Kanski

@TimothyKanski - আপনি মনে করেন, বিষয়বস্তু বিবেচনায় এবং আমার পূর্ববর্তী মন্তব্য (যেমন উপর বিশেষ জোর দেওয়া স্থাপন হিসেবে styling একটি যে আমি এই অবিদিত আছি)?
ড্যামিয়েন_এ_বিশ্বাসীরা

6
ওপ কোনও জিনিসটির জন্য সাধারণ নামটি ব্যবহার করে, এর ভুল বা খুব সাধারণ নাম নয়। আমি আপনার উপসংহারের সাথে একমত নই যে পেশাদাররা (যার জন্য এই সাইটটি নির্মিত হয়েছিল) এটি দ্বারা বিভ্রান্ত হবে, যখন এটি প্রকৃতপক্ষে সাধারণত পরিভাষা হিসাবে ব্যবহৃত হয়।
টিমোথি কানস্কি

উত্তর:


122

ব্যবহার case:

select *
from table
where isExternal = case @type when 2 then 1 else 0 end

165

এসকিউএল সার্ভারে 2012 , আপনি এই IIFফাংশনটি ব্যবহার করতে পারেন :

SELECT *
FROM table
WHERE isExternal = IIF(@type = 2, 1, 0)

আরও মনে রাখবেন: টি-এসকিউএল-তে অ্যাসাইনমেন্ট (এবং তুলনা) অপারেটরটি কেবল =(এবং এটি নয় ==- এটি সি #)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.