بولیئن ابواب کے قواعد

اس باب میں یہ بتایا گیا ہے کہ کیسے سوال کی حالت کے اظہار کے لئے کوئی بیان لکھا جاتا ہے۔

جائزہ

ایک حالت کا بیان بولین قیمت دیتا ہے۔ Milvus معیاری کی مدد سے حالات کو پیش کرتا ہے۔ جب تک یہ بولین حالت کا بیان کی قیمت کیسے حاصل کرتا ہے واضح نہیں ہوتا تب تک یہ TRUE یا FALSE کی قیمتیں واپس دیتا ہے۔ براہ کرم predicate expressions کے استعمال کے لئے Python SDK API حوالے سے مدد لیں۔

اوپریٹرز

منطقی اوپریٹرز

منطقی اوپریٹرز کم از کم دو بیانات کا موازنہ کرتے ہیں۔

علامت عمل مثال بیانات
'and' && AND expr1 && expr2 جب expr1 اور expr2 دونوں سچ ہوں تو TRUE واپس کرتا ہے۔
'or' || OR expr1 || expr2 جب expr1 یا expr2 میں سے ایک سچ ہو تو TRUE واپس کرتا ہے۔

بائنری حساب اوپریٹرز

بائنری حساب اوپریٹرز دو عملاء لیتے ہیں اور بنیادی حساب کی عملیات کرتے ہیں، متناسب نتیجہ واپس کرتے ہیں۔

علامت عمل مثال بیانات
+ جمع a + b دو عملاء کو ایک ساتھ جمع کرتا ہے۔
- منفی a - b دوسرا عملاء پہلا عملاء کم کرتا ہے۔
* تفہیم a * b دو عملاء کو آپس میں ضرب کرتا ہے۔
/ تقسیم a / b پہلا عملاء دوسرا عملاء سے تقسیم کرتا ہے۔
** طاقت a ** b پہلا عملاء دوسرے کی طاقت پر پہنچاتا ہے۔
% باقی a % b پہلا عملاء دوسرے سے تقسیم کرتا ہے اور باقی واپس کرتا ہے۔

رشتوں کے اوپریٹرز

رشتوں کے اوپریٹرز نشانات استعمال کرتے ہیں تاکہ برابری، برابری یا نسبتی ترتیب کی جانچ پڑتال کی جا سکے۔

علامت عمل مثال بیانات
< کم ہے a < b اگر a ب سے کم ہو تو TRUE واپس کرتا ہے۔
> زیادہ ہے a > b اگر a ب سے زیادہ ہو تو TRUE واپس کرتا ہے۔
== برابر ہے a == b اگر a ب کے برابر ہو تو TRUE واپس کرتا ہے۔
!= برابر نہیں ہے a != b اگر a ب کے برابر نہ ہو تو TRUE واپس کرتا ہے۔
<= کم یا برابر a <= b اگر a ب سے کم یا برابر ہو تو TRUE واپس کرتا ہے۔
>= زیادہ یا برابر a >= b اگر a ب سے زیادہ یا برابر ہو تو TRUE واپس کرتا ہے۔

اوپریٹر پیشاندہ اور منسلکیت

مندرجہ ذیل جدول میں اوپریٹر کی پیشاندہ اور منسلکیت کی فہرست دی گئی ہے۔ اوپریٹرز کی پیشاندہ کی ترتیب اوپر سے نیچے کی سمت میں ہے۔

پیشاندہ اوپریٹر بیانات منسلکیت
1 + - یونی آرتھمیٹک اوپریٹرز بائیں سے دائیں
2 not یونی منطقی اوپریٹر دائیں سے بائیں
3 ** بائینری آرتھمیٹک اوپریٹر بائیں سے دائیں
4 * / % بائینری آرتھمیٹک اوپریٹر بائیں سے دائیں
5 + - بائینری آرتھمیٹک اوپریٹر بائیں سے دائیں
6 < <= > >= موازنہ کرنے والے اوپریٹرز بائیں سے دائیں
7 == != موازنہ کرنے والے اوپریٹرز بائیں سے دائیں
8 like LIKE موازنہ کرنے والے اوپریٹرز بائیں سے دائیں
9 json_contains JSON_CONTAINS JsonArray اوپریٹر بائیں سے دائیں
10 json_contains_all JSON_CONTAINS_ALL JsonArray اوپریٹر بائیں سے دائیں
11 json_contains_any JSON_CONTAINS_ANY JsonArray اوپریٹر بائیں سے دائیں
12 && and بائینری منطقی اوپریٹر بائیں سے دائیں
13 || or بائینری منطقی اوپریٹر بائیں سے دائیں

بیانات عموماً بائیں سے دائیں کی سمت سے موازنہ کئے جاتے ہیں۔ پیچیدہ بیانات بیان بیان کی بیٹھ کر ایک بار میں موازنہ کیے جاتے ہیں۔ بیانات کے موازنہ کے ترتیب کو ان کے استعمال کئے جانے والے اوپریٹرز کی پیشاندہ سے تعین کیا جاتا ہے۔

اگر کسی بیانات میں دو یا دو سے زیادہ اوپریٹرز شامل ہوں جو ایک ہی پیشاندہ کے ہوں تو سب سے پہلے بائیں سے دائیں اوپریٹر کو موازنہ کیا جاتا ہے۔

مثال کے طور پر، 10 / 2 * 5 کو (10 / 2) کے طور پر موازنہ کیا جائے گا اور نتیجہ کو 5 سے ضرب کیا جائے گا۔

جب ضرورت ہو زیر پیشاندہ عملیات کو ترجیح دینے کی، انہیں قوسین میں رکھا جانا چاہئے۔

مثال کے طور پر، 30 / 2 + 8. عام طور پر یہ 30 کو 2 سے تقسیم کیا جاتا ہے، اور پھر نتیجہ میں 8 جمع کرنا ہوتا ہے۔ اگر آپ 2 + 8 سے تقسیم کرنا چاہتے ہیں تو یہ 30 / (2 + 8) لکھا جانا چاہئے گا۔

قوسین بیانات کے اندر قابل اطلاق ہوتے ہیں۔ سب سے اندر والے قوسین کو سب سے پہلے موازنہ کیا جاتا ہے۔

مثالی شرائط

یہاں ملوس (جو int64 INT64 قسم کے ڈیٹا کو شامل کرنے والے سکیلر فیلڈ کو ظاہر کرتا ہے، float floating-point قسم کے ڈیٹا کو شامل کرنے والے سکیلر فیلڈ کو ظاہر کرتا ہے، اور VARCHAR VARCHAR قسم کے ڈیٹا کو شامل کرنے والے سکیلر فیلڈ کو ظاہر کرتا ہے) میں دستیاب بولیئن شرائط کی مثالیں ہیں:

  1. موازنہ شرط
"int64 > 0"
"0 < int64 < 400"
"500 < int64"
VARCHAR > "str1"
  1. منطقی عمل اور قوسین
"(int64 > 0 && int64 < 400) یا (int64 > 500 && int64 < 1000)"
  1. in شرط

ملوس صرف ایک مضمون کو واضح طور پر تعین شدہ اہم کلیدی فیلڈ کے ساتھ حذف کرنے کو سپورٹ کرتا ہے، جو صرف in ترکیب کے ذریعے حاصل کیا جا سکتا ہے۔

"int64 not in [1, 2, 3]"
VARCHAR not in ["str1", "str2"]
  1. TermExpr، BinaryLogicalOp، اور CmpOp (مختلف فیلڈوں پر)
"int64 in [1, 2, 3] اور float != 2"
  1. BinaryLogicalOp اور CmpOp
"int64 == 0 یا int64 == 1 یا int64 == 2"
  1. CmpOp اور UnaryArithOp یا BinaryArithOp
"200+300 < int64"
  1. MatchOp (پریفکس میچنگ)
VARCHAR like "prefix%"
  1. JsonArrayOp
  • JSON_CONTAINS(identifier, JsonExpr)

    اگر JSON_CONTAINS (دوسرا پیرامیٹر) کو جسنی اظہار" کا جواب ہو تو، تعین کنندہ (پہلا پیرامیٹر) کا ایک پیپر کی فہرست ہونی چاہئے۔ اس کے علاوہ، بیان ہمیشہ جھوٹی ثابت ہوتی ہے۔

json_contains(x, 1) # ==> سچ
json_contains(x, "a") # ==> جھوٹ

json_contains(x, [1,2,3]) # ==> سچ
json_contains(x, [3,2,1]) # ==> جھوٹ
  • JSON_CONTAINS_ALL(identifier, JsonExpr)

    JSON_CONTAINS_ALL بیان میں جسنی اظہار ہمیشہ ایک فہرست ہونی چاہئے۔

json_contains_all(x, [1,2,8]) # ==> سچ
json_contains_all(x, [4,5,6]) # ==> جھوٹ (6 موجود نہیں ہے)
  • JSON_CONTAINS_ANY(identifier, JsonExpr)

    JSON_CONTAINS_ANY بیان میں جسنی اظہار ہمیشہ ایک فہرست ہونی چاہئے۔ دوسرے صورت میں، اس کا رویہ JSON_CONTAINS کے ساتھ ہی ہوتا ہے۔

json_contains_any(x, [1,2,8]) # ==> سچ
json_contains_any(x, [4,5,6]) # ==> سچ (6 موجود ہے)
json_contains_any(x, [6,9]) # ==> جھوٹ