এসকিউএলাইটে বিওওএল মানের প্রকারটি কী? আমি আমার টেবিলে সত্য / মিথ্যা মান সংরক্ষণ করতে চাই।
আমি INTEGER এর একটি কলাম তৈরি করতে এবং এতে 0 বা 1 এর মান সংরক্ষণ করতে পারি তবে এটি BOOL প্রকারটি কার্যকর করার সেরা উপায় হবে না।
কোন উপায় আছে?
ধন্যবাদ।
এসকিউএলাইটে বিওওএল মানের প্রকারটি কী? আমি আমার টেবিলে সত্য / মিথ্যা মান সংরক্ষণ করতে চাই।
আমি INTEGER এর একটি কলাম তৈরি করতে এবং এতে 0 বা 1 এর মান সংরক্ষণ করতে পারি তবে এটি BOOL প্রকারটি কার্যকর করার সেরা উপায় হবে না।
কোন উপায় আছে?
ধন্যবাদ।
উত্তর:
এসকিউএলাইটের জন্য কোনও দেশীয় বুলিয়ান ডেটা টাইপ নেই। প্রতি Datatypes ডক :
এসকিউএলাইটের আলাদা বুলিয়ান স্টোরেজ ক্লাস নেই। পরিবর্তে, বুলিয়ান মানগুলি পূর্ণসংখ্যা 0 (মিথ্যা) এবং 1 (সত্য) হিসাবে সংরক্ষণ করা হয়।
এসকিউএলাইটে আপনি সবচেয়ে ভাল যা করতে পারেন তা হল মিথ্যা ও সত্য উপস্থাপনের জন্য পূর্ণসংখ্যা 0 এবং 1 ব্যবহার করুন। আপনি কলামের ধরণটি এভাবে ঘোষণা করতে পারেন:
CREATE TABLE foo(mycolumn BOOLEAN NOT NULL CHECK (mycolumn IN (0,1)));
NOT NULL
যদি আপনি NULL
0 এবং 1 এর পাশাপাশি অনুমতি দিতে চান তবে ছাড় দিন ।
BOOLEAN
এখানে টাইপ নামের ব্যবহারটি পাঠযোগ্যতার জন্য, এসকিউএলাইটের কাছে এটি কেবল একটি ধরণের NUMERIC স্নেহযুক্ত ।
উল্লেখ্য যে এসকিউএলাইট ৩.৩.০ (২০০ 2006) থেকে CHECK সীমাবদ্ধতাগুলি সমর্থিত ।
এখানে কিছু উদাহরণ অন্তর্ভুক্ত রয়েছে যা কাজ করবে:
sqlite> INSERT INTO foo VALUES(0);
sqlite> INSERT INTO foo VALUES(1);
sqlite> INSERT INTO foo VALUES(0.0);
sqlite> INSERT INTO foo VALUES(1.0);
sqlite> INSERT INTO foo VALUES("0.0");
sqlite> INSERT INTO foo VALUES("1.0");
sqlite> select mycolumn, typeof(mycolumn) from foo;
0|integer
1|integer
0|integer
1|integer
0|integer
1|integer
এবং কিছু ব্যর্থ হবে:
sqlite> INSERT INTO foo VALUES("-1");
Error: constraint failed
sqlite> INSERT INTO foo VALUES(0.24);
Error: constraint failed
sqlite> INSERT INTO foo VALUES(100);
Error: constraint failed
sqlite> INSERT INTO foo VALUES(NULL);
Error: foo.mycolumn may not be NULL
sqlite> INSERT INTO foo VALUES("true");
Error: constraint failed
sqlite> INSERT INTO foo VALUES("false");
Error: constraint failed
SQLite বুলিয়ান ডেটাটাইপ: এসকিউএলাইটের
আলাদা বুলিয়ান স্টোরেজ ক্লাস নেই। পরিবর্তে, বুলিয়ান মানগুলি পূর্ণসংখ্যা 0 (মিথ্যা) এবং 1 (সত্য) হিসাবে সংরক্ষণ করা হয়।
আপনি বুলিয়ানকে এইভাবে রূপান্তর করতে পারেন:
int flag = (boolValue)? 1 : 0;
আপনি নীচে হিসাবে পূর্বে ফিরে বুলেয়ান রূপান্তর করতে পারেন:
// Select COLUMN_NAME values from db.
// This will be integer value, you can convert this int value back to Boolean as follows
Boolean flag2 = (intValue == 1)? true : false;
আপনি যদি স্ক্লাইটটি অন্বেষণ করতে চান তবে এখানে একটি টিউটোরিয়াল রয়েছে ।
আমি এখানে একটি উত্তর দিয়েছেন । এটি তাদের পক্ষে কাজ করছে।
Boolean flag2 = (intValue != 0);
মান 0 এবং 1 সহ পূর্ণসংখ্যা ডেটা ব্যবহার করা সবচেয়ে দ্রুত।
এরিকওয়া এর উত্তর আরও। চেক সীমাবদ্ধতাগুলি একটি পাঠ্য ডেটাটাইপ প্রয়োগ করে এবং কেবল সত্য বা মিথ্যা ক্ষেত্রে নির্দিষ্ট মানগুলিকে অনুমতি দিয়ে সিউডো বুলিয়ান কলাম সক্ষম করতে পারে eg
CREATE TABLE IF NOT EXISTS "boolean_test"
(
"id" INTEGER PRIMARY KEY AUTOINCREMENT
, "boolean" TEXT NOT NULL
CHECK( typeof("boolean") = "text" AND
"boolean" IN ("TRUE","FALSE")
)
);
INSERT INTO "boolean_test" ("boolean") VALUES ("TRUE");
INSERT INTO "boolean_test" ("boolean") VALUES ("FALSE");
INSERT INTO "boolean_test" ("boolean") VALUES ("TEST");
Error: CHECK constraint failed: boolean_test
INSERT INTO "boolean_test" ("boolean") VALUES ("true");
Error: CHECK constraint failed: boolean_test
INSERT INTO "boolean_test" ("boolean") VALUES ("false");
Error: CHECK constraint failed: boolean_test
INSERT INTO "boolean_test" ("boolean") VALUES (1);
Error: CHECK constraint failed: boolean_test
select * from boolean_test;
id boolean
1 TRUE
2 FALSE
তবে, আপনি যদি সেগুলির একটি গোছা সংরক্ষণ করতে চান তবে আপনি সেগুলি বিট-শিফট করতে পারেন এবং সেগুলি একত্রে সংরক্ষণ করতে পারেন, ইউনিক্স ফাইলের অনুমতি / মোডের মতো কিছুটা।
উদাহরণস্বরূপ 755 মোডের জন্য, প্রতিটি ডিজিট ব্যবহারকারীদের বিভিন্ন শ্রেণির বোঝায়: মালিক, গোষ্ঠী, সর্বজনীন। প্রতিটি সংখ্যার মধ্যে 4 টি পড়া হয়, 2 টি লেখা হয়, 1 কার্যকর করা হয় তাই 7 তাদের সমস্ত বাইনারি 111 এর মতো হয় 5 5 টি পড়া হয় এবং কার্যকর হয় তাই 101. আপনার নিজস্ব এনকোডিং প্রকল্প তৈরি করুন।
আমি কেবল ডেটালিজ ডাইরেক্ট থেকে টিভি শিডিউল ডেটা সংরক্ষণ করার জন্য কিছু লিখছি এবং আমার বাইনারি বা হ্যাঁ / কোনও ক্ষেত্র নেই: স্টেরিও, এইচডিটিভি, নতুন, আইআই, ক্লোজ ক্যাপশনযুক্ত, ডলবি, স্প্যানিশের সিপ, প্রিমিয়ার। সুতরাং 7 বিট, বা একটি পূর্ণসংখ্যার সর্বোচ্চ 127. একটি অক্ষর সত্যই।
আমি এখন যা কাজ করছি তার থেকে এসি উদাহরণ। has () হ'ল একটি ফাংশন যা ২ য় স্ট্রিং প্রথমটিতে থাকলে 1 প্রদান করে। inp হ'ল এই ফাংশনটির ইনপুট স্ট্রিং। মিস্ক একটি স্বাক্ষরবিহীন অক্ষর 0 থেকে শুরু করে।
if (has(inp,"sap='Spanish'") > 0)
misc += 1;
if (has(inp,"stereo='true'") > 0)
misc +=2;
if (has(inp,"ei='true'") > 0)
misc +=4;
if (has(inp,"closeCaptioned='true'") > 0)
misc += 8;
if (has(inp,"dolby=") > 0)
misc += 16;
if (has(inp,"new='true'") > 0)
misc += 32;
if (has(inp,"premier_finale='") > 0)
misc += 64;
if (has(inp,"hdtv='true'") > 0)
misc += 128;
সুতরাং আমি আরও পূর্ণাঙ্গের জন্য একটি পূর্ণসংখ্যায় 7 বুলিয়ান সংরক্ষণ করছি।
আপনি নিম্নলিখিতটি ব্যবহার করে উপরের সমীকরণগুলিকে সহজ করতে পারেন:
boolean flag = sqlInt != 0;
যদি বুলিয়ানটির ইন্ট উপস্থাপনা (sqlInt) 0 হয় (মিথ্যা), বুলিয়ান (পতাকা) মিথ্যা হবে, অন্যথায় এটি সত্য হবে।
সংক্ষিপ্ত কোডটি এর সাথে কাজ করার জন্য সর্বদা সুন্দর :)
এটি করার আরেকটি উপায় হ'ল একটি পাঠ্য কলাম। এবং তারপরে / ডাটাবেস থেকে মানটি সংরক্ষণ / পড়ার আগে বুলিয়ান এবং স্ট্রিংয়ের মধ্যে বুলিয়ান মান রূপান্তর করুন।
যাত্রা। আপনার "boolValue = true;
"
স্ট্রিং:
//convert to the string "TRUE"
string StringValue = boolValue.ToString;
এবং বুলিয়ান ফিরে:
//convert the string back to boolean
bool Boolvalue = Convert.ToBoolean(StringValue);