js-sql-parser

1.6.0 • Public • Published

js-sql-parser

parse / stringify sql (select grammar) in js.

Build Status NPM Version NPM Downloads

sql grammar follows https://dev.mysql.com/doc/refman/5.7/en/select.html

news

  • 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. #33
  • Fix bug stringify keyword having since v1.2.1. #29
  • Typo 'refrence' has been fixed to 'reference' since v1.2.0.

for more changes see CHANGELOG

commonjs usage

npm install --save js-sql-parser

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
// 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.

script tag

<script src="./dist/parser/sqlParser.js"><script/>

var sqlParser = window.sqlParser;
var ast = sqlParser.parse('select * from dual');
var sql = sqlParser.stringify(ast);

AMD supported

...

unsupported grammar currently

  • Hexadecimal Literals as x'01af' X'01af', but 0x01af is supported.
  • keyword COLLATE.
  • parammarker: keyword PREPARE / EXECUTE / DEALLOCATE
  • variable: keyword SET / CREATE PROCEDURE / CREATE FUNCTION
  • identifier expr: ODBC escape syntax
  • matchexpr: Full-Text Search Functions. // to support
  • intervalexpr: Date INTERVAL keyword. // to support
  • into outfile: INTO OUTFILE keyword. // to support

Build

  • Run npm run build to build the distributable.

LICENSE

MIT

Versions

Current Tags

VersionDownloads (Last 7 Days)Tag
1.6.024,378latest

Version History

VersionDownloads (Last 7 Days)Published
1.6.024,378
1.5.09,100
1.4.14,518
1.3.037
1.2.21
1.2.1878
1.1.12
1.0.91
1.2.01
1.1.02
1.0.81
1.0.7609
1.0.61
1.0.52
1.0.43
1.0.32
1.0.21
1.0.12
1.0.01
1.0.0-alpha.11
1.0.0-alpha.01

Package Sidebar

Install

npm i js-sql-parser

Weekly Downloads

31,513

Version

1.6.0

License

ISC

Unpacked Size

89.6 kB

Total Files

7

Last publish

Collaborators

  • albin3