如何将这些查询从单个字符串拆分为单个查询数组?
示例:
"SELECT * FROM table1; SELECT * FROM table2;"
到
[
"SELECT * FROM table1;",
"SELECT * FROM table2;"
]
好吧,我不能使用javascript.split(“;”)因为查询中可能有分号作为值。喜欢
"SELECT * FROM table 1 WHERE col LIKE ';'"
感谢。
答案 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)