tb-sql-tools
v0.1.2
Published
该包提供了将 SQL 转换为 JSON、将 JSON 转换为 SQL 以及修改 SQL 的功能。
Readme
SQL Parser and Modifier
该包提供了将 SQL 转换为 JSON、将 JSON 转换为 SQL 以及修改 SQL 的功能。
安装
使用 npm 或 yarn 安装依赖:
npm install
# 或者
yarn add使用方式
将 SQL 转换为 JSON
import {parseSqlToJSON} from 'tb-sql-tools';
const sql = "column1 = 'value1' AND column2 IN ('value2', 'value3')";
const json = parseSqlToJSON(sql);
console.log(json);将 JSON 转换为 SQL
import {jsonToSql} from 'tb-sql-tools';
const json = {
AND: [
{column: 'column1', operator: '=', value: 'value1'},
{column: 'column2', operator: 'IN', values: ['value2', 'value3']}
]
};
const sql = jsonToSql(json);
console.log(sql);修改 SQL
import {modifySql} from 'tb-sql-tools';
const sql = "column1 = 'value1' AND column2 IN ('value2', 'value3')";
const operation = {
key: 'column2',
value: ['value4'],
operator: 'IN',
type: 'select'
};
const modifiedSql = modifySql(sql, operation);
console.log(modifiedSql);将条件数组转换为 SQL
import {conditionToSql} from 'tb-sql-tools';
const conditions = [
{key: 'column1', operator: '=', value: ['value1']},
{key: 'column2', operator: 'IN', value: ['value2', 'value3']},
{key: 'column3', operator: 'IS', value: [null]}
];
const sql = conditionToSql(conditions);
console.log(sql);获取 SQL 中的 AND 条件
import {getAndConditions} from 'tb-sql-tools';
// 基本用法
const sql1 = "threat.tag LIKE '%Mitre%' AND net.src_ip = '172.16.71.1'";
const conditions1 = getAndConditions(sql1);
console.log(conditions1);
// 输出: [
// { key: 'threat.tag', operator: 'LIKE', value: ['Mitre'] },
// { key: 'net.src_ip', operator: '=', value: ['172.16.71.1'] }
// ]
// 处理空输入
const conditions2 = getAndConditions("");
console.log(conditions2); // 输出: false
// 处理非纯AND结构
const sql3 = "threat.tag LIKE '%Mitre%' OR net.src_ip = '172.16.71.1'";
const conditions3 = getAndConditions(sql3);
console.log(conditions3); // 输出: false
// 处理NULL值
const sql4 = "attacker IS NULL AND victim IS NOT NULL";
const conditions4 = getAndConditions(sql4);
console.log(conditions4);
// 输出: [
// { key: 'attacker', operator: 'IS', value: [null] },
// { key: 'victim', operator: 'IS NOT', value: [null] }
// ]
// 处理IN操作符
const sql5 = "threat.type IN ('trojan','c2','exfil')";
const conditions5 = getAndConditions(sql5);
console.log(conditions5);
// 输出: [
// { key: 'threat.type', operator: 'IN', value: ['trojan', 'c2', 'exfil'] }
// ]示例
示例 1:将 SQL 转换为 JSON
import {parseSqlToJSON} from 'tb-sql-tools';
const sql = "column1 = 'value1' AND column2 IN ('value2', 'value3')";
const json = parseSqlToJSON(sql);
console.log(JSON.stringify(json, null, 2));输出:
{
"AND": [
{
"column": "column1",
"operator": "=",
"value": "value1"
},
{
"column": "column2",
"operator": "IN",
"values": ["value2", "value3"]
}
]
}示例 2:将 JSON 转换为 SQL
import {jsonToSql} from 'tb-sql-tools';
const json = {
AND: [
{column: 'column1', operator: '=', value: 'value1'},
{column: 'column2', operator: 'IN', values: ['value2', 'value3']}
]
};
const sql = jsonToSql(json);
console.log(sql);输出:
(column1 = 'value1' AND column2 IN ('value2','value3'))示例 3:修改 SQL
import {modifySql} from 'tb-sql-tools';
const sql = "column1 = 'value1' AND column2 IN ('value2', 'value3')";
const operation = {
key: 'column2',
value: ['value4'],
operator: 'IN',
type: 'select'
};
const modifiedSql = modifySql(sql, operation);
console.log(modifiedSql);输出:
(column1 = 'value1' AND column2 IN ('value2','value3','value4'))示例 4:将条件数组转换为 SQL
import {conditionToSql} from 'tb-sql-tools';
const conditions = [
{key: 'column1', operator: '=', value: ['value1']},
{key: 'column2', operator: 'IN', value: ['value2', 'value3']},
{key: 'column3', operator: 'IS', value: [null]}
];
const sql = conditionToSql(conditions);
console.log(sql);输出:
column1 = 'value1' AND column2 IN ('value2','value3') AND column3 IS NULL示例 5:获取 SQL 中的 AND 条件
import {getAndConditions} from 'tb-sql-tools';
const sql = "threat.tag LIKE '%Mitre%' AND net.src_ip = '172.16.71.1'";
const conditions = getAndConditions(sql);
console.log(conditions);输出:
[
{
"key": "threat.tag",
"operator": "LIKE",
"value": ["Mitre"]
},
{
"key": "net.src_ip",
"operator": "=",
"value": ["172.16.71.1"]
}
]