2014-02-10 2 views
0

Это может быть тривиальная вещь, но я не могу найти его в любом месте ... У меня есть переменная,извлечения строки в счете Баш/MySQL обновленных строк

UPDATED="-------------- UPDATE table SET column = 'value' WHERE condition = 'true' -------------- Query OK, 3 rows affected Rows matched: 0 Changed: 0 Warnings: 0 Bye"

Я хотел бы получить 3 от переменной $UPDATED. Это может быть что угодно, иногда это 0, а иногда и ноль (одна цифра, двузначные цифры и т. Д.)

Как получить такое значение количества строк. Я обнаружил, что использование -vvv в запросе mysql дает вышеприведенный текст, поэтому я его использую. Если есть другие более простые способы получить количество строк, обновленных, то еще лучше.

ответ

1

Использование Grep

echo "${UPDATED}"| grep -Po "[0-9]*(?= rows)" 
+0

Это ошибка: sh: 21: Ошибка синтаксиса: перенаправление неожиданно – user3275103

+0

нормально, кажется, ваша система не поддерживает '<<<', я обновил, вы можете попробовать еще раз? – BMW

+1

Спасибо, сейчас работает. – user3275103

0

Если ваша проблема связана с количеством строк, на которые повлиял ваш оператор UPDATE, вы можете просто использовать метод [ROW_COUNT][1] для его получения.

UPDATE table SET column = value; 
SELECT row_count() INTO variable; 

В вашем Баш скрипт, вы можете сделать это, где affected_rows это переменная, которая будет хранить значение команды

affected_rows='`mysql -h [hostname] -u[user] -p[pass] -e UPDATE table SET column = value; SELECT row_count();`'; 
+0

Это именно то, что я хочу, но я не знаю синтаксиса для него. Я написал как есть, и он выдает ошибку - необъявленную переменную. Я довольно новичок в этом, так что, пожалуйста, помогите мне с точными заявлениями? – user3275103

+0

Вам нужно объявить переменную, в которую вы читаете значение из row_count(). Поэтому просто объявите переменную в своей программе, и вам будет хорошо идти. – Incognito

+0

Я использую блок mysql следующим образом: '$ MYSQL -h $ MHOST -u $ MUSER -p $ MPASS $ i << EOFMYSQL declare updated_count = 0; Таблица UPDATE SET colum = значение; SELECT row_count() INTO updated_count; EOFMYSQL' Но он все еще дает мне ошибку 'ERROR 1327 (42000) в строке 4: Необъявленная переменная: updated_count' – user3275103

Смежные вопросы