You can't specify target table for update in FROM clause

В дополнение к ответу zippoxer я использую эту функцию:

String.prototype.format = function () {
    var a = this, b;
    for (b in arguments) {
        a = a.replace(/%[a-z]/, arguments[b]);
    }
    return a; // Make chainable
};

var s = 'Hello %s The magic number is %d.';
s.format('world!', 12); // Hello World! The magic number is 12.

У меня также есть версия, не относящаяся к прототипу, которую я использую чаще всего для ее Java-подобного синтаксиса:

function format() {
    var a, b, c;
    a = arguments[0];
    b = [];
    for(c = 1; c < arguments.length; c++){
        b.push(arguments[c]);
    }
    for (c in b) {
        a = a.replace(/%[a-z]/, b[c]);
    }
    return a;
}
format('%d ducks, 55 %s', 12, 'cats'); // 12 ducks, 55 cats

Обновление ES 2015

Все классные новинки в ES 2015 значительно облегчают эту задачу:

function format(fmt, ...args){
    return fmt
        .split("%%")
        .reduce((aggregate, chunk, i) =>
            aggregate + chunk + (args[i] || ""), "");
}

format("Hello %%! I ate %% apples today.", "World", 44);
// "Hello World, I ate 44 apples today."

Я подумал, что, поскольку, как и старые, это не так. Фактически, парсинг букв может быть выполнен с использованием одного токена %%. Преимущество этого состоит в том, что он очевиден и не затрудняет использование одного %. Однако если по какой-то причине вам нужен %%, вам нужно заменить его на себя:

format("I love percentage signs! %%", "%%");
// "I love percentage signs! %%"
351
задан OMG Ponies 13 December 2010 в 07:19
поделиться

1 ответ

Другие обходные решения включают ОТЛИЧНЫЙ ВЫБОР использования или ПРЕДЕЛ в подзапросе, хотя они не являются столь же явными в их эффекте на материализацию. это работало на меня

, как упомянуто в Документе

MySql
0
ответ дан 23 November 2019 в 00:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: