बूलियन को स्ट्रिंग में बदलना
MySQL में BOOLEAN प्रकार TINYINT(1) का पर्याय है: TRUE = 1, FALSE = 0। IF() या CASE का उपयोग करके इन्हें पठनीय स्ट्रिंग्स ('MALE'/'FEMALE') में बदलें।
उदाहरण: टेबल बनाना और डेटा इन्सर्ट करना
mysql> CREATE TABLE DemoTable815(Gender BOOLEAN); Query OK, 0 rows affected (0.84 sec)
रिकॉर्ड्स इन्सर्ट करना
mysql> INSERT INTO DemoTable815 VALUES(TRUE), (FALSE), (FALSE), (TRUE); Query OK, 4 rows affected (...)
संग्रहीत मान देखना (1/0)
mysql> SELECT * FROM DemoTable815;
+--------+ | Gender | +--------+ | 1 | | 0 | | 0 | | 1 | +--------+ 4 rows in set (0.00 sec)
IF() फंक्शन से स्ट्रिंग निकालना
mysql> SELECT IF(Gender = TRUE, 'MALE', 'FEMALE') AS GenderString FROM DemoTable815;
परिणाम
+--------------+ | GenderString | +--------------+ | MALE | | FEMALE | | FEMALE | | MALE | +--------------+ 4 rows in set (0.00 sec)
CASE एक्सप्रेशन (अधिक लचीला)
सरल CASE
SELECT CASE Gender WHEN TRUE THEN 'MALE' ELSE 'FEMALE' END AS GenderString FROM DemoTable815;
खोज CASE (जटिल शर्तों के लिए)
SELECT CASE
WHEN Gender = TRUE THEN 'MALE'
WHEN Gender = FALSE THEN 'FEMALE'
ELSE 'UNKNOWN'
END AS GenderString
FROM DemoTable815;
IF() vs CASE तुलना
| पहलू | IF() | CASE |
|---|---|---|
| सिंटैक्स | सरल: IF(condition, true_val, false_val) | अधिक वर्बोज लेकिन लचीला |
| शर्तें | केवल एक शर्त | एकाधिक WHEN क्लॉज |
| मानक SQL | MySQL-विशिष्ट | ANSI SQL मानक |
| नेस्टिंग | संभव लेकिन गन्दा | नेस्टेड CASE स्पष्ट |
बूलियन कॉलम की वास्तविकता
mysql> DESC DemoTable815; +--------+------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+------------+------+-----+---------+-------+ | Gender | tinyint(1) | YES | | NULL | | +--------+------------+------+-----+---------+-------+
बेहतर डिजाइन: ENUM या लुकअप टेबल
ENUM (कॉम्पैक्ट, मान्य मान लागू)
CREATE TABLE Users (
Id INT PRIMARY KEY,
Gender ENUM('MALE', 'FEMALE', 'OTHER') NOT NULL
);
लुकअप टेबल (सबसे लचीला)
CREATE TABLE Genders (
Code TINYINT PRIMARY KEY,
Label VARCHAR(20)
);
INSERT INTO Genders VALUES (1, 'MALE'), (0, 'FEMALE');
SELECT u.*, g.Label AS GenderString
FROM Users u JOIN Genders g ON u.Gender = g.Code;
NULL हैंडलिंग
SELECT IF(Gender IS NULL, 'UNKNOWN', IF(Gender, 'MALE', 'FEMALE')) FROM DemoTable815;