> parse / stringify sql (select grammar) in js.
npm install js-sql-parser> parse / stringify sql (select grammar) in js.
[![Build Status][travis-image]][travis-url]
[![NPM Version][npm-image]][npm-url]
[![NPM Downloads][downloads-image]][downloads-url]
sql grammar follows https://dev.mysql.com/doc/refman/5.7/en/select.html
- Unicode extended char support for column name or alias & Function call in table_factor since v1.6.0
- Support feature PlaceHolder like ${param} since v1.5.0 #43
- Fix bug using ' & " for column alias? since v1.4.1 #40, #44
- Fix bug tableFactor alias since v1.3.0 #34
- Add support for "" quoted alias since v1.2.2. #33having
- Fix bug stringify keyword since v1.2.1. #29
- Typo 'refrence' has been fixed to 'reference' since v1.2.0.
for more changes see CHANGELOG
npm install --save js-sql-parser
`js
const parser = require('js-sql-parser');
const ast = parser.parse('select * from dual');
console.log(JSON.stringify(ast, null, 2));
ast.value.selectItems.value[0].value = 'foo';
ast.value.from.value[0].value.value.value = 'bar';
console.log(parser.stringify(ast));
// SELECT foo FROM bar
`
`js
// placeholder test
const parser = require('js-sql-parser');
const ast = parser.parse('select ${a} as a');
ast['value']['selectItems']['value'][0]['value'] = "'value'";
console.log(parser.stringify(ast));
// SELECT 'value' AS a
`
Note: PlaceHolder is an literal value but not an identifier. Table_name / column_name / function_name are identifier thus should NOT be placed with placeholder.
`js