node package manager

sql92-json

SQL92-JSON

can stringify a JSON into an SQL and viceversa parse an SQL and serialize it into a JSON

ūüöß STATUS: Right now the test suite contains 41 SELECT statements (and 1 CREATE) that are serialized into JSON and viceversa parsed back into SQL successfully. Adding INSERT and other DMLs statementes as well as DDLs is on the roadmap.

Installation | API | Examples | Recipes | References | License

NPM version Build Status Dependency Status Coverage Status

js-standard-style

NPM

Installation

With npm do

npm install sql92-json

API

stringify

Convert a JSON to SQL

var json2sql = require('sql92-json').stringify
 
console.log(json2sql({  // 
  SELECT: ['*'],        // SELECT * 
  FROM: ['revenue']     // FROM revenue 
}))                     // 

parse

Convert an SQL to JSON

var sql2json = require('sql92-json').parse
 
console.log(sql2json(`
SELECT *
FROM revenue
`)                      // { 
                        //   SELECT: ['*'], 
                        //   FROM: ['revenue'] 
                        // } 

Recipes

Examples

See examples folder where every .json file has its homonym .sql.

See for example the following example JSON and its corresponding SQL.

{
  "SELECT": [
    { "COUNT": "*", "AS": "num" }
  ],
  "FROM": [
    {
      "SELECT": ["*"],
      "FROM": ["mytable"],
      "WHERE": [
        "yyyymmdd", { "=": 20170101 },
        { "AND": [ "country", { "IN": ["IT", "US"] } ] },
        { "AND": [
          "categoryid", { "BETWEEN": [100, 200] },
          { "OR": [ "productname", { "!=": "'icecream'" } ] }
        ] }
      ]
    }
  ]
}
SELECT COUNT(*) AS num
FROM (
    SELECT *
    FROM mytable
    WHERE yyyymmdd = 20170101
        AND country IN ( 'IT', 'US' )
        AND (
            categoryid BETWEEN 100 AND 200
            OR productname != 'icecream'
        )
)

References

sql1992.txt was downloaded from http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt

License

MIT