我从一个长查询中获得了以下示例,并试图构建一个工具:
var str =" SELECT
'Capital Return' AS Portfolio_Classification
, '(Gross)' AS Portfolio_Type
, '0.21%' AS Portfolio_Value
, '' AS Benchmarks_Classification
, '' AS Benchmarks_Comment
, '' AS Benchmarks_Value
FROM hfhgjdfgj
WHERE number= 3
UNION
SELECT
'Capital Return' AS Portfolio_Classification
, '(Net)' AS Portfolio_Type
, '0.21%' AS Portfolio_Value
, '' AS Benchmarks_Classification
, '' AS Benchmarks_Comment
, '' AS Benchmarks_Value"
FROM asdfasdf
WHERE 1=1我尝试将单引号放在出现在后面的字符串后面,如下所示:
var str =" SELECT
'Capital Return' AS 'Portfolio_Classification'
, '(Gross)' AS 'Portfolio_Type'
, '0.21%' AS 'Portfolio_Value'
, '' AS 'Benchmarks_Classification'
, '' AS 'Benchmarks_Comment'
, '' AS 'Benchmarks_Value'
FROM hfhgjdfgj
WHERE number= 3
UNION
SELECT
'Capital Return' AS 'Portfolio_Classification'
, '(Net)' AS 'Portfolio_Type'
, '0.21%' AS 'Portfolio_Value'
, '' AS 'Benchmarks_Classification'
, '' AS 'Benchmarks_Comment'
, '' AS 'Benchmarks_Value'"
FROM asdfasdf
WHERE 1=1我尝试获取"AS"+1的所有索引,并将其设置为"AS '“,但仍然存在单词末尾没有单引号的问题。我看了Lodash和Vanilla Javascript,但还是在循环。
有人有什么建议吗?
发布于 2017-05-04 01:34:10
你想要这样的东西:
var str =" SELECT 'Capital Return' AS Portfolio_Classification , '(Gross)' AS Portfolio_Type , '0.21%' AS Portfolio_Value , '' AS Benchmarks_Classification , '' AS Benchmarks_Comment , '' AS Benchmarks_Value FROM hfhgjdfgj WHERE number= 3 UNION SELECT 'Capital Return' AS Portfolio_Classification , '(Net)' AS Portfolio_Type , '0.21%' AS Portfolio_Value , '' AS Benchmarks_Classification , '' AS Benchmarks_Comment , '' AS Benchmarks_Value";
str = str.split(' ');
for(var i = 0; i < str.length; i++){
if(i != 0 && str[i-1] == "AS"){
str[i] = '\'' + str[i] + '\'';
}
}
str = str.join(' ');发布于 2017-05-05 17:34:38
使用RegExp。搜索单词"as“、一个或多个空格以及由a-z0-9_-组成的单词。然后返回引用的结果。
var str = `SELECT
'Capital Return' AS Portfolio_Classification
, '(Gross)' AS Portfolio_Type
, '0.21%' AS Portfolio_Value
, '' AS Benchmarks_Classification
, '' AS Benchmarks_Comment
, '' AS Benchmarks_Value
FROM hfhgjdfgj
WHERE number= 3
UNION
SELECT
'Capital Return' AS Portfolio_Classification
, '(Net)' AS Portfolio_Type
, '0.21%' AS Portfolio_Value
, '' AS Benchmarks_Classification
, '' AS Benchmarks_Comment
, '' AS Benchmarks_Value"
FROM asdfasdf
WHERE 1=1
`;
var result = str.replace(/as\s+([a-z0-9_-]+)/gi, function(_, s) {
return "AS '" + s + "'";
});
console.log(result);
https://stackoverflow.com/questions/43765993
复制相似问题