SQL查询语法拆分器

时间:2014-10-01 07:20:55

标签: javascript sql

如何将这些查询从单个字符串拆分为单个查询数组?

示例:

"SELECT * FROM table1; SELECT * FROM table2;"

[
"SELECT * FROM table1;",
"SELECT * FROM table2;"
]

好吧,我不能使用javascript.split(“;”)因为查询中可能有分号作为值。喜欢

"SELECT * FROM table 1 WHERE col LIKE ';'"

感谢。

4 个答案:

答案 0 :(得分:0)

您可以使用拆分字符串“; SELECT”进行拆分,并在新字符串的开头添加SELECT(第一个除外)

答案 1 :(得分:0)

var queryStrings = "SELECT * FROM table1; SELECT * FROM table2;"

// Remove linebreaks;
var queries = queryStrings.replace(/(\r\n|\n|\r)/gm, "");

// Replace ";" delimeter with random string that's unlikely to ever be in a SQL query
queries = queries.replace(/;/gi, "#&@*^%%)**%123&%");

// Split the queries on that random set of characters
queries = queries.split("#&@*^%%)**%123&%");

var cleanQueries = [];
for (var i = 0; i < queries.length; i++) {
    // Append a semi-colon after each query
    if (queries[i]) {
        var query = queries[i] + ";";
        // Trim any white space off the ends;
        query = query.trim();
        cleanQueries.push(query);
    }
}
console.log(cleanQueries)
// ["SELECT * FROM table1;", "SELECT * FROM table2;"]

答案 2 :(得分:-1)

使用javascript.split(“;”),因为这是每个行以'结尾的模式'; '如果在java中这是不可能的,你可以在sql中创建一个拆分字符串函数

答案 3 :(得分:-1)

在这里你可以像那样分割它

DECLARE @Text NVARCHAR(MAX)
SELECT @Text = '"SELECT * FROM table1; SELECT * FROM table1;","SELECT * FROM table1; SELECT * FROM table2;"'
SELECT @Text = REPLACE(@Text,'"','')
SELECT @Text = 'SELECT ('''+ REPLACE(@Text,';','''); SELECT(''') + ''')'
SELECT @Text = REPLACE(@Text,'; SELECT('''')','')
PRINT @Text
EXEC (@Text)

如果要打印

DECLARE @Text NVARCHAR(MAX)
SELECT @Text = '"SELECT * FROM table1; SELECT * FROM table1;","SELECT * FROM table1; SELECT * FROM table2;"'
SELECT @Text = REPLACE(@Text,'"','')
SELECT @Text = 'PRINT ('''+ REPLACE(@Text,';','''); PRINT(''') + ''')'
SELECT @Text = REPLACE(REPLACE(@Text,' SELECT','SELECT'),',SELECT','SELECT')
EXEC (@Text)