Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में बूलियन कॉलम से जेंडर स्ट्रिंग निकालना (IF/CASE)

बूलियन को स्ट्रिंग में बदलना

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 क्लॉज
मानक SQLMySQL-विशिष्ट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;
  1. Windows में MySQL तालिका डेटा कहाँ संग्रहीत होता है? Windows में MySQL तालिका डेटा कहाँ संग्रहीत होता है?

    Windows में MySQL तालिका डेटा की डिफ़ॉल्ट संग्रहण स्थान जानने के लिए @@datadir सिस्टम वेरिएबल या SHOW VARIABLES कमांड का उपयोग करें। विधि 1: @@datadir वेरिएबल SELECT @@datadir; आउटपुट: +---------------------------------------------+ | @@datadir | +----------------

  1. - MySQL में महीने के अनुसार टेबल में मानों का योग कैसे करें

    EXTRACT(MONTH FROM ...) और GROUP BY के साथ मासिक योग इसके लिए EXTRACT() का उपयोग करें, जो विशिष्ट महीने के रिकॉर्ड निकालने की अनुमति देता है। उदाहरण के लिए, जनवरी में सभी कीमतों को जोड़ना (वर्ष की परवाह किए बिना)। पहले टेबल बनाएं: create table DemoTable1415 ( ProductPurchaseDate date, ProductPrice

  1. - MySQL में यूजर-डिफाइंड वेरिएबल के मान परिणाम टेबल में कैसे दिखाएं?

    यूजर-डिफाइंड वेरिएबल और CONCAT_WS() का उपयोग वेरिएबल के लिए @ प्रीफिक्स और संयुक्त परिणाम प्रदर्शित करने के लिए CONCAT_WS() का उपयोग करें। पहले एक टेबल बनाते हैं: CREATE TABLE DemoTable1508 ( StudentFirstName VARCHAR(20), StudentLastName VARCHAR(20) ); Query OK, 0 rows affected (0.55 sec)