Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗rsSpDbWh 216 of 288 menu
◀ ▶

Условие в запросе в Rust

Часть WHERE отбирает строки перед чтением. Сравнение столбца с меткой или литералом оставляет только подходящие записи, остальные не попадают в результат.

Выведем имена, где ключ больше единицы:

use rusqlite::{Connection, params}; fn after_one() -> Result<(), rusqlite::Error> { let conn = Connection::open("app.db")?; let mut stmt = conn.prepare("SELECT name FROM user WHERE id > ?1")?; let rows = stmt.query_map(params![1], |row| row.get::<_, String>(0))?; for name in rows { println!("{}", name?); } Ok(()) } fn main() { match after_one() { Ok(()) => {} Err(e) => println!("{}", e), } }

Строка с id равным 1 не печатается. Условие проверяется для каждой строки таблицы.

Текстовый столбец сравнивают так же, через метку в условии:

use rusqlite::{Connection, params}; fn pick(label: &str) -> Result<(), rusqlite::Error> { let conn = Connection::open("app.db")?; let mut stmt = conn.prepare("SELECT id FROM user WHERE name = ?1")?; let rows = stmt.query_map(params![label], |row| row.get::<_, i64>(0))?; for id in rows { println!("{}", id?); } Ok(()) } fn main() { if let Err(e) = pick("ann") { println!("{}", e); } }

Дана таблица:

1 ann 2 bob 3 ann

Выведите id всех строк, где name равно ann.

Дана таблица user. Выведите имена, у которых id не больше 2.

Скажите, меняется ли число строк в таблице из-за условия в запросе выборки.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить