{"id":42910,"library":"js-sql-parser","title":"js-sql-parser","description":"A JavaScript library for parsing and stringifying SQL SELECT statements into ASTs, based on MySQL 5.7 SELECT grammar. Version 1.6.0 is current; last updated in 2021 with low release cadence. Supports basic SELECT syntax including joins, subqueries, and placeholders like ${param}. Does not support INSERT, UPDATE, DELETE, or DDL. Provides CommonJS, AMD, and browser builds. Key differentiator: minimal and focused solely on SELECT parsing vs full SQL parsers like sql.js or node-sql-parser.","status":"maintenance","version":"1.6.0","language":"javascript","source_language":"en","source_url":"https://github.com/JavaScriptor/js-sql-parser","tags":["javascript","js","sql-parser"],"install":[{"cmd":"npm install js-sql-parser","lang":"bash","label":"npm"},{"cmd":"yarn add js-sql-parser","lang":"bash","label":"yarn"},{"cmd":"pnpm add js-sql-parser","lang":"bash","label":"pnpm"}],"dependencies":[],"imports":[{"note":"Only default export is available; named exports are not supported.","wrong":"const { parse, stringify } = require('js-sql-parser');","symbol":"parser","correct":"const parser = require('js-sql-parser');"},{"note":"ESM default import works, as the package has no named exports.","wrong":"import { parse } from 'js-sql-parser';","symbol":"parser","correct":"import parser from 'js-sql-parser';"}],"quickstart":{"code":"const parser = require('js-sql-parser');\nconst ast = parser.parse('SELECT id, name FROM users WHERE age > 18');\nconsole.log(JSON.stringify(ast, null, 2));\n// Modify AST: change SELECT list to count(*)\nast.value.selectItems.value[0].value = { type: 'function', name: 'COUNT', args: [{ type: 'star' }] };\nconst newSql = parser.stringify(ast);\nconsole.log(newSql);\n// SELECT COUNT(*) FROM users WHERE age > 18","lang":"javascript","description":"Parse a SELECT query into an AST, modify it, and stringify back to SQL."},"warnings":[{"fix":"Update code to use 'reference' instead of 'refrence' when accessing AST node properties.","message":"The 'refrence' property was renamed to 'reference' in v1.2.0 — code accessing AST nodes with 'refrence' will break.","severity":"breaking","affected_versions":"<1.2.0"},{"fix":"Use placeholders only for values (e.g., WHERE id = ${val}), not for schema object names.","message":"Placeholders (${param}) are treated as literal values, not identifiers. Using placeholders for table/column names will produce incorrect SQL or errors.","severity":"gotcha","affected_versions":">=1.5.0"}],"env_vars":null,"search_vec":"'1.6.0':24 '2021':30 '5.7':20 'amd':56 'ast':16 'base':17 'basic':36 'browser':58 'build':59 'cadenc':34 'commonj':55 'current':26 'ddl':53 'delet':51 'differenti':61 'focus':64 'full':70 'grammar':22 'includ':39 'insert':49 'javascript':6,80 'join':40 'js':2,81 'js-sql-parser':1 'key':60 'last':27 'librari':7 'like':44,73 'low':32 'minim':62 'mysql':19 'node':77 'node-sql-pars':76 'param':45 'pars':9,68 'parser':4,72,79,84 'placehold':43 'provid':54 'releas':33 'select':13,21,37,67 'sole':65 'sql':3,12,71,78,83 'sql-parser':82 'sql.js':74 'statement':14 'stringifi':11 'subqueri':41 'support':35,48 'syntax':38 'updat':28,50 'version':23 'vs':69","created_at":"2026-06-05T16:57:15.796742+00:00","updated_at":"2026-06-05T16:57:15.796742+00:00","problems":[{"fix":"Run 'npm install js-sql-parser' and ensure node_modules contains it.","cause":"Package not installed or not resolved correctly.","error":"Cannot find module 'js-sql-parser'"},{"fix":"Use default import: import parser from 'js-sql-parser' then parser.stringify(ast).","cause":"Using a named import (e.g., import { stringify } from 'js-sql-parser') instead of default import.","error":"TypeError: parser.stringify is not a function"}],"ecosystem":"npm","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":null,"cli_version":null,"type":"library","homepage":"https://github.com/JavaScriptor/js-sql-parser#readme","github":"https://github.com/JavaScriptor/js-sql-parser","docs":null,"changelog":null,"pypi":null,"npm":"js-sql-parser","openapi_spec":null,"status_page":null,"smithery":null,"categories":["database"],"base_url":null,"auth_type":null,"provenance":{"verified_status":null,"verified_at":null,"last_verified":"2026-06-05","next_check":"2026-09-03","install_tag":null}}