← 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.