ওরাকল ডাটাবেসগুলিতে কি কোনও বুলিয়ান প্রকার আছে?


249

BITএমএস এসকিউএল সার্ভারে ডেটাটাইপের অনুরূপ ওরাকল ডেটাবেজে কি কোনও বুলিয়ান প্রকার আছে ?


7
দুর্ভাগ্যক্রমে ওরাকল এএনএসআই এসকিউএল: 1999 স্ট্যান্ডার্ডকে ( en.wikedia.org/wiki/SQLQL9999 ) সম্পূর্ণরূপে সমর্থন করে না যখন এটি চালু হয়েছিল।
জেফ্রি কেম্প

2
বিকল্প দৃষ্টিভঙ্গি ( এসকিউএলটির বুলিয়ান ধরণের কেন হওয়া উচিত নয় ): vadimtropashko.wordpress.com/2010/09/16/…
জেফ্রি কেম্প

7
@ জেফ্রেইম্প That ব্লগটি সংবেদনশীল নয়। কিছু বুলিয়ান ভেল একটি টেবিলের অন্যান্য ক্ষেত্রের উপর ভিত্তি করে গণনা করা যেতে পারে, তার অর্থ এই নয় যে সমস্ত বুলিয়ান ক্ষেত্র গণনা করা যেতে পারে। উদাহরণস্বরূপ "is_trusted_customer" যেখানে এটি সত্য যদি এবং কেবলমাত্র কোনও মানুষ সিদ্ধান্ত নিলে, "আমি সেই ব্যক্তিকে বিশ্বাস করি।"
জ্যাকব

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

2
হ্যাঁ. বুলিয়ানগুলির মতো আরও ডেটা ধরণের আরও নির্ভুল অভিব্যক্তি শক্তি দেবে - আপনি আমার সামনে থেকে কোনও যুক্তি পাবেন না। আমি খুব খুশি যে আমাদের কমপক্ষে একটি DATEপ্রকার রয়েছে - সব সময় খেজুরের উপস্থাপনাগুলি নিয়ে কাজ করার কথা কল্পনা করুন :)
জেফ্রি কেম্প

উত্তর:


277

ওরাকলের এসকিউএল (পিএল / এসকিউএল নয়) কেবল বুলিয়ান ডেটাটাইপ নিখোঁজ রয়েছে, তবে পরিবর্তে কী ব্যবহার করবেন সে সম্পর্কে তাদেরও স্পষ্ট সুপারিশ নেই। জিজ্ঞাসাবাদে এই থ্রেডটি দেখুন । সুপারিশ করা থেকে CHAR(1) 'Y'/'N'তারা NUMBER(1) 0/1যখন 'Y'/'N'ইংরাজির ভাষার উপর নির্ভর করে কেউ নির্দেশ করে তখন এগুলিতে স্যুইচ করে যখন উদাহরণস্বরূপ জার্মান প্রোগ্রামাররা এর 'J'/'N'পরিবর্তে ব্যবহার করতে পারেন ।

সবচেয়ে খারাপ বিষয় হ'ল তারা এই নির্বোধ সিদ্ধান্তটি যেমন ''=NULLমূর্খতা রক্ষা করে তাদের রক্ষা করে ।


9
1/0 হ'ল, যদি অস্পষ্ট না হয়, কমপক্ষে দ্বিধাহীন।
অ্যাডাম মাশ্চ

15
তবে '' = নাল মিথ্যা! '' সত্যই সত্য। :)
জিম ডেভিস

4
মাইকেল-ও: আমি বেশ কয়েকবার দেখেছি। আমার জন্য, এটি সর্বদা 0/1, তবে অন্যান্য প্রোগ্রামাররা জে / এন পছন্দ করে। (আমি একটি জার্মানভাষী দেশে
থাকি

11
@Irfy সম্প্রতি আমি দেখেছি Nএবং F, ব্যবহৃত হচ্ছে কারণ ONএবং OFFএকই অক্ষর দিয়ে শুরু ...
JimmyB

7
যে কেউ তর্ক করতে পারে যে বুলিয়ানের প্রতিস্থাপন হিসাবে, 'টি' / 'এফ' আরও বুদ্ধিমান করে তোলে
এরিক কিটজমুয়েলার

55

নাঃ।

ব্যবহার করতে পারেন:

IS_COOL NUMBER(1,0)

1 - true
0 - false

--- ওরাকল উপভোগ করুন

অথবা এখানে বর্ণিত হিসাবে চর ওয়াই / এন ব্যবহার করুন


6
আমি চর (1) পছন্দ করি কারণ এতে কম স্থান ব্যবহার করা হয়। আপনি এটি এইভাবে পরীক্ষা করে দেখতে পারেন: create table testbool (boolc char(1), booln number(1)); insert into testbool values ('Y', 1 ); select dump(boolc), dump(booln) from testbool; সেই CHAR সঞ্চিত আছে: Typ=96 Len=1: 89এবং সেই সংখ্যা: Typ=2 Len=2: 193,2কমপক্ষে 12
সি তে

38

আম্মাক এবং কুপার উত্তর অনুসারে, আমরা 0 এর ডিফল্ট সহ নম্বর (1) ব্যবহার করি এবং নালার অনুমতি দিই না।

এখানে প্রদর্শনের জন্য একটি অ্যাড কলাম রয়েছে :

ALTER TABLE YourSchema.YourTable ADD (ColumnName NUMBER(1) DEFAULT 0 NOT NULL);

আশা করি এটি কাউকে সাহায্য করবে।


17
মনে রাখবেন যে আপনি সেখানে -1 সংরক্ষণ করতে পারেন। মানগুলিকে 0 এবং 1 এ সীমাবদ্ধ করতে আপনি এতে একটি চেক সীমাবদ্ধতা যুক্ত করতে পারেন
ডেভিড অ্যালড্রিজ

@ ডেভিডএলড্রিজে বুলিয়ান যুক্তি অনুসারে, 0 (FALSE) নয় এমন কোনও সংখ্যা 1 (সত্য) এর সমান, তাই কোনও পরীক্ষার সীমাবদ্ধতার প্রয়োজনীয়তার পরিপ্রেক্ষিতে কোন সংখ্যাটি সংরক্ষণ করা হবে তা বিবেচ্য নয়। কোনও বুলিয়ানকে কোনও boolean intToBool(int in) { return (in != 0); }
পূর্ববর্তী

3
@AgiHammerthief সত্য, কিন্তু আপনি "বুলিয়ান" কলামে একটি বিধেয় ব্যবহার আমি বরং জানতে চাই যে আমার অপশন আছে সারি এটি করতে চান তাহলে ColumnName = 0বা ColumnName = 1বদলে ColumnName = 0বা ColumnName <> 0। শেষের শব্দার্থকগুলি প্রোগ্রামার বান্ধব নয়। আমি দুটি মান রেখে ক্যোয়ারী অপটিমাইজারের জন্য এটি আরও সহজ রাখতে চাই।
ডেভিড অলড্রিজ

14

এসকিউএল স্তরে নয় এবং এটি একটি করুণ বিষয় যদিও PLSQL এ রয়েছে


13

না, ওরাকল ডাটাবেসে কোনও বুলিয়ান টাইপ নেই, তবে আপনি এইভাবে এটি করতে পারেন:

আপনি একটি কলামে একটি চেক সীমাবদ্ধতা রাখতে পারেন।

যদি আপনার টেবিলটিতে চেক কলাম না থাকে তবে আপনি এটি যুক্ত করতে পারেন:

ALTER TABLE table_name
ADD column_name_check char(1) DEFAULT '1';

আপনি যখন একটি রেজিস্টার যুক্ত করবেন, ডিফল্টরূপে এই কলামটি 1 পান।

এখানে আপনি একটি চেক রেখেছেন যা কলামের মান সীমাবদ্ধ করে, কেবলমাত্র 1 বা 0 রাখবে

ALTER TABLE table_name ADD
CONSTRAINT name_constraint 
column_name_check (ONOFF in ( '1', '0' ));

9

কোনও বুলিয়ান টাইপ নেই, তবে এর পরিবর্তে আপনি 1/0 (টাইপ সংখ্যা), বা 'ওয়াই' / 'এন' (টাইপ চর), বা 'ট্রু' / 'ভুয়া' (টাইপ ভারচার 2) করতে পারেন।



4

একটি সাধারণ স্পেস-সেভিং ট্রিকটি বুলিয়ান মানগুলি কেবল ওরাকল CHAR হিসাবে , NUMBER এর চেয়ে বেশি সংরক্ষণ করে:


4
CHAR (1) এবং VARCHAR2 (1) স্থান ব্যবহারে অভিন্ন।
টনি অ্যান্ড্রুজ

3
আমি এখানে যেমন শিখেছি ডকস.অরাকল.com/cd/E17952_01/refman-5.5-en/char.html যখন আমরা একটি চর গল্প করি তখন কেবল চর এবং বর্ণের মধ্যে পার্থক্য থাকে - চরটি 1 বাইট ব্যবহার করে, তবে বার্চর খালি জায়গার জন্য 1 বাইট ব্যবহার করে একটি চরিত্রের জন্য + 1 বাইট -> বর্ণচর (বর্ণচর 2) 1 টি চরিত্রের জন্য 2 বাইট ব্যবহার করে <যখন চর কেবল 1 বাইট ব্যবহার করে
আর্টেম.বোরসোভ

@ আর্টেম.বৌরিসভ: সেই ম্যানুয়ালটি মাইএসকিউএল এর জন্য, ওরাকল ডাটাবেসের জন্য নয়
এ_হর্স_উইথ_নো_নেম

3

কেউ এখনও এটি উল্লেখ করেনি বলে: কা (1) ব্যবহার করাও সাধারণ অনুশীলন বলে মনে হয়।


1
কাঁচা (1) দুর্দান্ত, এতে ব্যবহারকারী তার ধারণাগুলি ধরে নিতে পারে না, ক্যোয়ারী করছেন এমন ব্যক্তিকে কাঁচা (1) কলামে কী আছে তা বুঝতে হবে এবং এর অর্থপূর্ণ কিছুতে অনুবাদ করতে হবে।
জ্যাকব

13
<সার্কাসম> হ্যাঁ এটি এত দুর্দান্ত যে আপনি এটির সাথে পোর্টেবল জেডিবিসি কোডটি লিখতে পারবেন না </ </
সার্কাসম

@ জ্যাকব - <জার্সাসম> এটি একটি আশ্চর্যজনক ধারণা! আমাদের অন্যান্য সমস্ত ডেটা ধরণের থেকে মুক্তি পাওয়া উচিত এবং रॉ কলামগুলিতে সমস্ত কিছু সংরক্ষণ করা উচিত! তারপরে NOBODY যথেচ্ছভাবে ডেটাগুলির ভুল ব্যাখ্যা করতে পারে! </ জার্কাস্ম>
বব জার্ভিস - মনিকা পুনরায়

ডেটা টাইপগুলি সংজ্ঞায়িত করার জন্য যদি ওরাকলটিতে কিছু উপায় থাকে যাতে আপনি কল করুন যাতে আমরা একটি বুল টাইপ তৈরি করতে পারি যা 'কাঁচা (1)' টাইপটির নামকরণকে বুল বা বুলিয়ান মোড়ায়। এরপরে আমরা বিষয়বস্তুর উপর নির্ভর করে 'সত্য' বা 'মিথ্যা' মুদ্রণের জন্য একটি ফাংশন সংজ্ঞায়িত করতে পারি।
জ্যাকব

-1
DECLARE
error_flag  BOOLEAN := false;
BEGIN

error_flag := true;
--error_flag := 13;--expression is of wrong type

  IF error_flag THEN 

UPDATE table_a SET id= 8 WHERE id = 1;

END IF;
END;

এই উদাহরণ কাজ করে। আমি আরও লক্ষ্য করেছি যে আমি কেবল পিএল / এসকিউএল এর মধ্যে বুলিয়ান ধরণের সাথে কাজ করতে পারি। এসকিউএল-এর মধ্যে বুলিয়ান কলগুলি দেয় না এবং একটি অবৈধ রিলেশনাল অপারেটর ত্রুটি দেয়।
রিচার্ড পাসকুয়েল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.