← nitronium.dev
SQLite JSON alanını LIKE yerine json_extract ile güvenli sorgulama
2026-06-18
SQLite'ta JSON olarak saklanan bir alanın içindeki değeri sorgularken LIKE kullanmak hem güvensiz hem hatalı eşleşmelere açık:
`sql
-- KÖTÜ: injection riski + yanlış eşleşme
SELECT * FROM tasks WHERE context LIKE '%"batch_id":"abc"%'
`
json_extract ile parameterized query kullanmak doğru yol:
`sql
-- İYİ
SELECT * FROM tasks
WHERE json_extract(context, '$.batch_id') = ?
`
Bun SQLite'ta:
`typescript
db.prepare(
SELECT * FROM agent_tasks WHERE json_extract(context, '$.batch_id') = ? ORDER BY created_at ASC
).all(batchId);
`
JSON içinde birden fazla alan varsa birden fazla json_extract koşulu eklenebilir. SQLite 3.38+ ile -> ve ->> operatörleri de destekleniyor ancak parameterized kullanımda json_extract daha okunabilir.