Почему Perl давит мой массив?

Как я понимаю, вы вставляете только часть своего поля xml. Если это действительный xml, вы можете использовать выражение xpath по функции ExtractValue

Я приведу вам простой пример:

Определение данных

[ 110]

Запрос

select ExtractValue(title, '/a/b[1]') from Test;

Этот запрос возвращает первый элемент b внутри тега a (обратите внимание на « 1 в запросе). Результат в в данном случае это X.

Так что в вашем случае вы можете использовать две функции ExtractValue в одном запросе, чтобы выбрать первый тег newValue и первый тег oldValue.

Ссылка: ExtractValue функция в документации MySQL

6
задан Milen A. Radev 3 December 2008 в 02:11
поделиться

3 ответа

Это потому что, когда Вы звоните foo(@_), прототип для foo() вызывает первый параметр (который является массивом), чтобы быть преобразованным в скаляр (который, число элементов в @_).

См. ответы на мой предыдущий вопрос, спрашивающий, "Почему Прототипы функции Perl Плохо"?

FWIW, можно удержать прототипы на месте, если Вы изменяетесь bar таким образом:

sub bar($;@) {
    foo(shift, @_);
}
20
ответ дан 8 December 2019 в 02:35
поделиться

Вы неправильно понимаете прототипы Perl. Удалите их, и это будет хорошо работать.

См.: Почему Perl 5 прототипы функции плохо?

10
ответ дан 8 December 2019 в 02:35
поделиться

избавьтесь от ($;@) после того, как Ваши имена функций и это хорошо работают.

5
ответ дан 8 December 2019 в 02:35
поделиться
Другие вопросы по тегам:

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