Citando John Machin <sjmac...@lexicon.net>:

> On 10/03/2009 10:56 PM, Andrea Galeazzi wrote:
>> Hi All,
>> I'm developing an application which relies on sqllite as  back-end. Now
>> I face to this problem: I've got a form that allows the user to fill a
>> lot of fields,  obliviously only a little part of them will actually be
>> filled, the others isn't gonna be in the search criteria. So I prepare a
>> parameterized query containing the whole possible fields like this:
>> SELECT * FROM Song WHERE id = ? AND title =  ? AND album LIKE '%?%';
>> How can I bind the unrequested fields? Does a trivial solution exist?
>> Thanks
>
> I suspect that your use of the word "nullable" in the subject is causing
> some confusion.
>
> If the user fills in only the title:
>
> SELECT * FROM Song WHERE id IS NULL AND title = ? AND album LIKE NULL;
> ??? I don't think so.
>
> AFAICT you want the effect of SELECT * FROM Song WHERE title = ? ;
> without the complexity of having 7 (or 15, or 31...) prepared statements
> to cope with all possibilities.
>
> You can do this by using LIKE/GLOB/etc provided that all your columns
> are text:
>
> sql = "SELECT * FROM Song WHERE id LIKE ? AND title LIKE ? AND album
> LIKE ?;"
> *NOTE* (pax Igor) no apostrophes on the RHS of LIKE -- let your DB
> interface do the quoting for you.
> Python example:
> qid = "%" # Any id; don't care
> qtitle = "%O'Reilly%"
> # contains "O'Reilly"; the DB i/f will turn that into the equivalent of
> ... LIKE '%O''Reilly%' ...
> qalbum = "%"
> cursor.execute(sql, (qid, qtitle, qalbum))
>
> BTW, the query optimiser can ignore column1 LIKE '%' only when column1
> is declared as NOT NULL, so this way of doing it may not be the fastest :-(
>
> HTH,
> John
> _______________________________________________
> sqlite-users mailing list
> sqlite-users@sqlite.org
> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
>

Yes, that's the problem:  I don't wanna test a field for NULL, but I'd  
like to know the
best way to ignore some field. Thanks for your advise but what about  
numeric field like
id?
I hope to write a query for each field combination isn't necessary!
By the way I'm using C Api.
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to