Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options
 
PerlMonks  

Re: DBI SQLite statement problem with %

by Pope-O-Matik (Pilgrim)
on Mar 23, 2016 at 13:21 UTC ( [id://1158626]=note: print w/replies, xml ) Need Help??


in reply to DBI SQLite statement problem with %

What's wrong? :) First of all, it is using dynamic sql. Use a placeholder instead:

Second, passing an optional clause like this can actually slow things down. You should instead have two queries, to have execution shorter and cleaner. Regardless, assuming CASE is supported, and no values have underscore or percent signs in them, you can change it to:

Tag1 LIKE CASE ? WHEN NULL THEN Tag1 ELSE ? END AND Tag2 LIKE CASE ? WHEN NULL THEN Tag2 ELSE ? END

If using =, it would be better, but the point is, checking equality for a column against itself is better then LIKE '%'. Another option, assuming any character can be guaranteed to not be used, for example '!':

? IN (Tag1, '!') AND ? IN(Tag2, '!');

Of course, an ugly where construct should also work:

(? IS NULL OR Tag1 LIKE ?) AND (? IS NULL OR Tag2 LIKE ?);

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1158626]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others lurking in the Monastery: (3)
As of 2024-04-19 20:00 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found