কোনও মাইএসকিউএল সেলেক্ট ক্লজে কোনও বুলিয়ানে পূর্ণসংখ্যা কাস্ট করবেন?


29

আমি এখানে নতুন তাই আমার প্রতি দয়া করুন। আমি নিম্নলিখিত পরিস্থিতিতে আছে:

আমার অনেকগুলি টেবিল রয়েছে যা সরলতার জন্য, আমার মাইএসকিউএল ডাটাবেসে একটি ভিউতে উপস্থাপন করা হয়। আমার সমস্যাটি হ'ল আমার এই দৃষ্টিভঙ্গির একটি মূল্য প্রয়োজন যা প্রতিনিধিত্ব করে যদি এটি এক ধরণের ইভেন্ট বা অন্য কোনও (একটি সাধারণ বুলিয়ান), যা আমি অর্জন করার চেষ্টা করেছি:

`gu`.`StoppingUnitEventME` = `ese`.`MonitoringElement` AS `IsStopingEvent`

ফলাফলটি int হিসাবে উপস্থাপিত হয় এবং সত্তা ফ্রেমওয়ার্ক দ্বারা এটি পড়ে। সমস্যাটি হ'ল আমার সত্যিই একটি বুলিয়ান রিটার্ন মান দরকার যা আমি এগুলি অর্জন করার চেষ্টা করেছি:

CAST((`gu`.`StoppingUnitEventME` = `ese`.`MonitoringElement`) as boolean) AS `IsStopingEvent` 

এর ফলে একটি ত্রুটি হয়েছিল, যা মাইএসকিউএল ওয়ার্কবেঞ্চে আমার কাছে প্রদর্শিত হয় না (আমি কেবল সেই বিরক্তিকর গ্রহণ করি "আপনার একটি সমস্যা আছে ...")।

আপনি কি আমাকে সাহায্য করতে পারেন?

এটি আমার অ্যাপ্লিকেশনটিতে এটি সমাধান করার চেষ্টা করা হয়েছিল, তবে আমি এটি সত্যিই ডেটাবেজে সমাধান করেছি, যেহেতু এটি পরে অন্য সফ্টওয়্যার দ্বারা ব্যবহৃত হবে।

উত্তর:


26

যদি ফাংশনটি ব্যবহার করে দেখুন :

SELECT IF(`gu`.`StoppingUnitEventME`=`ese`.`MonitoringElement`, TRUE, FALSE) 
FROM ...

অথবা

SELECT IF(`gu`.`StoppingUnitEventME`=`ese`.`MonitoringElement`, 1, 0) 
FROM ...

এমনকি আইএফ ফাংশন ছাড়াই চলমান

mysql> select ('rolando' = 'rolando') str_compare;
+-------------+
| str_compare |
+-------------+
|           1 |
+-------------+
1 row in set (0.00 sec)

mysql>

মাইএসকিএল ক্লায়েন্ট ব্যবহার করে 0 বা 1 উপার্জন করুন

সমস্যাটি হ'ল: কাস্ট () এবং কনভার্ট () কেবলমাত্র নিম্নলিখিত ধরণের গ্রহণ এবং ফিরিয়ে দিতে পারে :

  • বাইনারি [(এন)]
  • CHAR [(এন)]
  • DATE তারিখে
  • তারিখ সময়
  • DECIMAL [(এম [, ডি])]
  • স্বাক্ষরিত [স্বাক্ষরকারী]
  • TIME এ
  • নিযুক্ত [শর্তযুক্ত]

যেহেতু বুলিয়ান এই তালিকায় নেই, তাই এটি কখনও কাস্ট বা কনভার্টের মাধ্যমে ফেরানো যাবে না

আপনি স্ট্রিং উত্পন্ন করতে যদি ফাংশনটি ব্যবহার করতে পারেন

SELECT IF(`gu`.`StoppingUnitEventME`=`ese`.`MonitoringElement`, 'TRUE', 'FALSE') 
FROM ...

1
একটি বুলিয়ান একটি উপনাম tinyint। কোনও অবস্থাতেই IFএকটি ফেরত দেয় tinyintনা তাই আমি দেখতে পাচ্ছি না যে এই উত্তরটি কীভাবে সঠিক বা গ্রহণযোগ্য।
ইভান ক্যারল

@ ইভ্যানক্যারল আমার উত্তরটি ক্যাসট এবং সম্পূর্ণরূপে কন্ট্রোল করা বোঝায় ... যদি ফাংশনটি ব্যবহার করে তার কাঠামোটি যা না করে, যা বুয়ালিয়ানকে টিনআইএনটি (1-বাইট) না হয়ে আইএনটি (4-বাইট) হিসাবে স্বীকৃতি দেয়। এই ক্ষেত্রে, আপনি বুুলিয়ান মানগুলির সাথে কাজ না করার জন্য কাঠামোটিকে দোষ দিয়েছেন।
রোল্যান্ডোমাইএসকিউএলডিবিএ

10

অপ্রয়োজনীয় আইএফ () বিবৃতিটি ব্যবহার না করে আপনি খুব সহজ উপায়ে এটি করতে পারেন:

... `YourField` IS NOT NULL AS `YourField` ...

সত্যিই এটি সহজতম উপায়। এবং আমার ক্ষেত্রে কাজ করে। ধন্যবাদ!
মাইক হ্যারিসন

4

আপনি ক্লাসিক বুলিয়ান জোর চেষ্টা করতে পারেন:

নির্বাচন করুন না (যাই হোক না কেন);

এ সম্পর্কে ভাল বিষয়টি হ'ল এটি প্রাকৃতিকভাবে NULL সংরক্ষণ করে, যদিও এখানে বেশিরভাগ উত্তর দেয় না।

আপনি যদি নালকে মিথ্যা বলার জন্য বাধ্য করতে চান তবে তা করুন

নির্বাচন করুন (যদি না (যাই হোক না কেন), মিথ্যা);


1
আমি অবাক হই, এটি কীভাবে একটি পূর্ণসংখ্যাকে বুলিয়ান রূপান্তর করতে পারে?
ypercubeᵀᴹ

2

আপনি "CASE" ব্যবহার করতে পারেন:

SELECT CASE WHEN yourField=testValue THEN 'TRUE' ELSE 'FALSE' END as boolFieldName


আপনার এটি বুলিয়ান হিসাবে নিক্ষেপ করা উচিত, যদি এটি চরের ক্ষেত্র না হয়।
ম্যাকনেটস

কখনও কখনও আপনার প্রশ্নের গ্রাহক একটি চরিত্র চান, যদিও
এরিক উইলসন

2

এটি বর্তমানে অসম্ভব।

  • মাইএসকিউএলের একটি আসল BOOLEANপ্রকার নেই (বা একটি বাস্তব অ্যারে টাইপ .. বা একটি আসল জেএসওএন প্রকার)। এটির জন্য একটি উপনাম রয়েছেTINYINT
  • যে কোনও শর্ত একটি পূর্ণসংখ্যা ফেরত দেয়। এটি একটি সিপিইউর জন্য দ্রুততম ডেটাটাইপ, এবং সম্ভবত এই প্রয়োগের বিশদটি এখানে প্রতিফলিত হয়। উদাহরণস্বরূপ, 'true' IS TRUEএবং 1=1উভয় 1একটি হিসাবে ফিরেint
  • CAST একটি TINYINTবিন্যাস সরবরাহ করে না ।

যতদূর আমি আপনাকে বলতে পারি না কোনও প্রকারকে কমিয়ে দিতে পারে না, বা একটিতে একটি ছোট্ট উত্পাদন করতে পারে না SELECT

আমি চাই অত্যন্ত পোস্টগ্রি মাইগ্রেট সুপারিশ। এটি এত কম আতঙ্কজনক ... এবং মুক্তিপ্রাপ্ত।


2

মাইএসকিএল ফাংশন CAST_TO_BIT ব্যবহার করুন

উদাহরণ:

SELECT CAST_TO_BIT(1);

মাইএসকিউএল: নির্বাচন করুন সিএএসT_TO_BIT (0) ; -> jdbc ড্রাইভার -> জাভা: বুলিয়ান মিথ্যা ;

মাইএসকিউএল: নির্বাচন করুন সিএএসT_TO_BIT (1) ; -> jdbc ড্রাইভার -> জাভা: বুলিয়ান সত্য ;

মাইএসকিউএল: নির্বাচন করুন CAST_TO_BIT (NULL) ; -> jdbc ড্রাইভার -> জাভা: NULL ;

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