Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

सभी तालिकाओं में MySQL डेटाबेस से सभी शून्य तिथियां हटाएं

मौजूदा मूल्यों को बदलने के लिए आप इस तरह की क्वेरी का उपयोग कर सकते हैं:

UPDATE tablename SET date_column = '1900-01-01' WHERE date_column = '0000-00-00';

यदि आप अद्यतन क्वेरी को स्वचालित करना चाहते हैं तो आप तैयार कथन का उपयोग कर सकते हैं:

SET @sql_update=CONCAT_WS(' ', 'UPDATE', CONCAT(_schema, '.', _table),
                               'SET', _column, '=', '\'1900-01-01\'',
                               'WHERE', _column, '=', '\'0000-00-00\'');

PREPARE stmt FROM @sql_update;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

और आप वर्तमान स्कीमा पर सभी तालिकाओं में सभी कॉलमों के माध्यम से लूप कर सकते हैं जिन्हें दिनांक के रूप में घोषित किया गया है:

SELECT
  table_schema,
  table_name,
  column_name
FROM
  information_schema.columns
WHERE
  table_schema=DATABASE() AND data_type LIKE 'date%'

सभी स्तंभों के माध्यम से लूप करने के लिए आप एक संग्रहीत कार्यविधि का उपयोग कर सकते हैं:

DELIMITER //
CREATE PROCEDURE update_all_tables() BEGIN
  DECLARE done BOOLEAN DEFAULT FALSE;
  DECLARE _schema VARCHAR(255);
  DECLARE _table VARCHAR(255);
  DECLARE _column VARCHAR(255);
  DECLARE cur CURSOR FOR SELECT
                           CONCAT('`', REPLACE(table_schema, '`', '``'), '`'),
                           CONCAT('`', REPLACE(table_name, '`', '``'), '`'),
                           CONCAT('`', REPLACE(column_name, '`', '``'), '`')
                         FROM
                           information_schema.columns
                         WHERE
                           table_schema=DATABASE() AND data_type LIKE 'date%';

  DECLARE CONTINUE HANDLER FOR NOT FOUND SET done := TRUE;

  OPEN cur;

  columnsLoop: LOOP
    FETCH cur INTO _schema, _table, _column;
    IF done THEN
      LEAVE columnsLoop;
    END IF;   

    SET @sql_update=CONCAT_WS(' ', 'UPDATE', CONCAT(_schema, '.', _table),
                                   'SET', _column, '=', '\'1900-01-01\'',
                                   'WHERE', _column, '=', '\'0000-00-00\'');

    PREPARE stmt FROM @sql_update;
    EXECUTE stmt;
    DEALLOCATE PREPARE stmt;

  END LOOP columnsLoop;

  CLOSE cur;
END//
DELIMITER ;

कृपया एक उदाहरण देखें यहां ।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. सिंक से बाहर आदेश; अब आप इस कमांड को नहीं चला सकते SQL

  2. MySQL 5.7 से MySQL 8 में अपग्रेड करने के लिए टिप्स

  3. ऑनलाइन/ऑफ़लाइन डेटाबेस सिंक्रोनाइज़ेशन - MySQL/PHP

  4. MySQL में पिछले सप्ताह का डेटा कैसे खोजें

  5. MySQL में कई स्कीमाओं के बीच क्रॉस जॉइन करें। विशेषाधिकार और प्रदर्शन