1

これは過去に尋ねられたかもしれませんが、適切な答えが見つかりませんでした。私が探しているのは、以下のような SQL クエリからパラメーターを抽出する方法です。クエリは常に、EXEC ステートメントの後にクエリ名と可能なパラメータが続きます。

これは私が受け取る可能性のあるものの例です

EXEC [dbo].[myProcedure] @Param1

これは次のようにすることもできます

EXEC [dbo].[myProcedure] @Param1, @Param2, @Param3

これらは、入力が受け取る唯一のタイプのクエリです。なぜ私がこれをやっているのかについては、それはまた別の質問です.

私が探しているのは、上記の文字列を取得して、次のような値の配列を生成できるようにすることです

['@Param1','@Param2','@Param3',....]

私は元々単純な while ステートメントを使用してパースしようとしましたが、そこに大きな問題があるようです。

この質問が理にかなっているといいのですが、

乾杯、

ニコ

[編集]

次のステートメントを使用してこれを並べ替えました

function eParams(e) {
    var i = e.indexOf('@');
    if (i <= 0)
        return;
    e = e.substring(i);
    var p = e.split(',');
    var eList = [];
    var s = '';
    for (var i = 0, j = p.length - 1; i <= j; i++) {
        var sP = p[i].trim();
        if (sP.indexOf('@') < 0)
            continue;
        eList.push(sP);
    }
}
4

2 に答える 2

2
var str = 'EXEC [dbo].[myProcedure] @Param1, @Param2, @Param3';
(str).match(/(@[^\s,]+)/g);

配列を返します。

于 2012-05-21T09:14:43.747 に答える
0
var s = "EXEC [dbo].[myProcedure] @Param1, @Param2, @Param3";
var i = s.indexOf('@');
var a = s.substr(i).split(/\s*,\s*/);

(エラーチェックは省略)

于 2012-05-21T09:12:45.307 に答える