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

सरणी में mysql प्रश्नों को विभाजित करें, प्रत्येक प्रश्न से अलग;

एकाधिक, अर्ध-बृहदान्त्र से अलग किए गए SQL कथनों वाली एक स्ट्रिंग को देखते हुए, निम्न फ़ंक्शन प्रत्येक व्यक्तिगत कथन को पार्स करता है और उन सभी को एक सरणी में लौटाता है। यह एक (गैर-तुच्छ) रेगेक्स और एक कॉल का उपयोग करता है preg_match_all() , और एकल और बहु-पंक्ति टिप्पणियों, और एकल और दोहरे-उद्धृत स्ट्रिंग्स को सही ढंग से संभालता है, (जिनमें से प्रत्येक में गैर-समाप्ति अर्ध-कॉलन को अनदेखा किया जा सकता है):

function split_sql($sql_text) {
    // Return array of ; terminated SQL statements in $sql_text.
    $re_split_sql = '%(?#!php/x re_split_sql Rev:20170816_0600)
        # Match an SQL record ending with ";"
        \s*                                     # Discard leading whitespace.
        (                                       # $1: Trimmed non-empty SQL record.
          (?:                                   # Group for content alternatives.
            \'[^\'\\\\]*(?:\\\\.[^\'\\\\]*)*\'  # Either a single quoted string,
          | "[^"\\\\]*(?:\\\\.[^"\\\\]*)*"      # or a double quoted string,
          | /\*[^*]*\*+(?:[^*/][^*]*\*+)*/      # or a multi-line comment,
          | \#.*                                # or a # single line comment,
          | --.*                                # or a -- single line comment,
          | [^"\';#]                            # or one non-["\';#-]
          )+                                    # One or more content alternatives
          (?:;|$)                               # Record end is a ; or string end.
        )                                       # End $1: Trimmed SQL record.
        %x';  // End $re_split_sql.
    if (preg_match_all($re_split_sql, $sql_text, $matches)) {
        return $matches[1];
    }
    return array();
}

2017-08-15 संपादित करें: @jxmallett द्वारा इंगित किए गए रेगेक्स के बहु-पंक्ति टिप्पणी भाग में फिक्स्ड त्रुटि।2017-08-16 संपादित करें: सुव्यवस्थित रेगेक्स (रेगेक्स शेबैंग जोड़ा और अनावश्यक समूह को हटा दिया $2 )।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL एप्लिकेशन उपयोगकर्ता बनाम डेटाबेस उपयोगकर्ता

  2. मुद्रा रूपांतरण के साथ प्रत्येक उत्पाद प्रकार का न्यूनतम मूल्य प्राप्त करें

  3. MySQL वर्कबेंच द्वारा निर्यात की गई CREATE स्क्रिप्ट में दूसरे कंप्यूटर पर सिंटैक्स त्रुटि है

  4. कैसे mysql में दो तालिकाओं से डेटा लाने के लिए?

  5. AWS MSK का उपयोग करके अरोरा से रिकॉर्ड भेजने के लिए काफ्का कनेक्ट सेटअप