http://www.perlmonks.org?node_id=992787


in reply to Re^2: s/Perl/SQL/ ?
in thread s/Perl/SQL/ ?

Freezer:

I used commonly-used[1] SQL constructs, so[2] it should be just fine. I used MySQL about 10 years ago, and I seem to recall that it was fairly standard SQL, so I would expect it to work. (Most of the things I remember as lacking (such as nested queries) were added to MySQL years ago.)

I only mentioned Oracle to let you know that I'm not current on MySQL and that you *might* need to tweak it.

However, as Corion mentioned in his initial response, there's no substitute for using indexes, benchmarking and any statement analysis feedback your database offers. After all, how the database decides to execute your SQL statement may be markedly different than what you might imagine. For example, I *expect* that the comparison / length / substring may be faster than like. But I have no idea what MySQL's opinion may turn out to be.

Update: Updated in response to AM's reply. Thanks! [1] I changed "standard SQL" to "commonly-used SQL", and [2] removed "if MySQL uses standard SQL".

...roboticus

When your only tool is a hammer, all problems look like your thumb.

Replies are listed 'Best First'.
Re^4: s/Perl/SQL/ ?
by Anonymous Monk on Sep 10, 2012 at 19:43 UTC

    To nit-pick, != is not standard SQL. <> is. And ANSI SQL has substring(string FROM idx FOR len), as opposed to substr(string, idx, len)

    Anyway, good work on the rewrite. I tried it myself and ended up with a similar statement (albeit with a few extra tables).

      Anonymous Monk:

      Nice catches. I've never read the SQL standard, so I should've phrased it something more like "commonly used/implemented". The substr is just a bobble on my side. I'm always using substring in perl and substr in SQL, so you'd think I would be sensitized to checking that, at least.

      Sigh.

      Updated both nodes.

      ...roboticus

      When your only tool is a hammer, all problems look like your thumb.