From: Rob C. <pyt...@ge...> - 2005-05-26 19:18:19
|
Hi, I'm having problems figuring out the syntax for using LIKE. This works fine for an exact match: pkgs = Packages.select(Packages.q.maintainerName == "test") But I want to use something like this: pkgs = Packages.select("""maintainerName LIKE '%foo%'""") I get this error: _mysql_exceptions.OperationalError: (1054, "Unknown column 'packageName' in 'where clause'") I've tried a few changes like: pkgs = Packages.select("""Packages.maintainerName LIKE '%foo%'""") but that gives: _mysql_exceptions.OperationalError: (1109, "Unknown table 'Packages' in where clause") Thanks, Rob |
From: Oleg B. <ph...@ma...> - 2005-05-26 19:40:56
|
On Thu, May 26, 2005 at 12:17:44PM -0700, Rob Cakebread wrote: > This works fine for an exact match: > pkgs = Packages.select(Packages.q.maintainerName == "test") > > But I want to use something like this: > pkgs = Packages.select("""maintainerName LIKE '%foo%'""") pkgs = Packages.select(LIKE(Packages.q.maintainerName, "test")) Oleg. -- Oleg Broytmann http://phd.pp.ru/ ph...@ph... Programmers don't die, they just GOSUB without RETURN. |
From: Rob C. <pyt...@ge...> - 2005-05-26 19:59:19
|
Oleg Broytmann wrote: > > pkgs = Packages.select(LIKE(Packages.q.maintainerName, "test")) Perfect, thanks! I had to use '%' though: pkgs = Packages.select(LIKE(Packages.q.maintainerName, "%test%")) -- Rob Cakebread Gentoo Linux Developer Public Key: http://pgp.mit.edu:11371/pks/lookup?op=get&search=0x96BA679B Key fingerprint = 5E1A 57A0 0FA6 939D 3258 8369 81C5 A17B 96BA 679B |
From: Oleg B. <ph...@ma...> - 2005-05-27 07:36:08
|
On Thu, May 26, 2005 at 12:58:54PM -0700, Rob Cakebread wrote: > Oleg Broytmann wrote: > > > > pkgs = Packages.select(LIKE(Packages.q.maintainerName, "test")) > > Perfect, thanks! > I had to use '%' though: > > pkgs = Packages.select(LIKE(Packages.q.maintainerName, "%test%")) You can use STARTSWITH(), ENDSWITH() and CONTAINSSTRING(): STARTSWITH(what, pattern) is equiv to LIKE(what, pattern%) ENDSWITH(what, pattern) is equiv to LIKE(what, %pattern) CONTAINSSTRING(what, pattern) is equiv to LIKE(what, %pattern%) Other patterns like %p1%p2, p1_p2 etc are up to you pkgs = Packages.select(LIKE(Packages.q.maintainerName, "te_s%t")) Oleg. -- Oleg Broytmann http://phd.pp.ru/ ph...@ph... Programmers don't die, they just GOSUB without RETURN. |
From: Faber <zan...@in...> - 2005-05-27 12:03:49
|
On Thursday 26 May 2005 21:40, Oleg Broytmann wrote: > pkgs = Packages.select(LIKE(Packages.q.maintainerName, "test")) Is there another operator that does an insensitive-like comparison? For example, in PostgreSQL (although is not a SQL standard) you can use the ILIKE operator. -- Faber http://www.faberbox.com/ There are not many persons who know what wonders are opened to them in the stories and visions of their youth; for when as children we learn and dream, we think but half-formed thoughts, and when as men we try to remember, we are dulled and prosaic with the poison of life. -- H.P. Lovecraft |
From: Oleg B. <ph...@ma...> - 2005-05-27 12:09:44
|
On Fri, May 27, 2005 at 02:02:53PM +0200, Faber wrote: > Is there another operator that does an insensitive-like comparison? No, it's too database-dependent. You can achieve database-indepndence by writing LIKE(func.LOWER(what), pattern.lower()) > For example, in PostgreSQL (although is not a SQL standard) you can use the > ILIKE operator. Look how LIKE() is implemented in sqlbuilder.py. You can easily implement ILIKE in a matter of seconds. (-: Oleg. -- Oleg Broytmann http://phd.pp.ru/ ph...@ph... Programmers don't die, they just GOSUB without RETURN. |
From: Faber <zan...@in...> - 2005-05-27 12:36:55
|
On Friday 27 May 2005 14:09, Oleg Broytmann wrote: > > Is there another operator that does an insensitive-like comparison? > > No, it's too database-dependent. You can achieve database-indepndence > by writing > > LIKE(func.LOWER(what), pattern.lower()) Thank you, that would work and it's standard, too ;) > > For example, in PostgreSQL (although is not a SQL standard) you can use > > the ILIKE operator. > > Look how LIKE() is implemented in sqlbuilder.py. You can easily > implement ILIKE in a matter of seconds. (-: Thank you, again ;) =2D-=20 =46aber http://www.faberbox.com/ Only wimps use tape backup: _real_ men just upload their important stuff on= =20 ftp and let the rest of the world mirror it =A0-- Linus Torvalds |
From: Oleg B. <ph...@ma...> - 2005-05-27 12:43:01
|
On Fri, May 27, 2005 at 02:36:18PM +0200, Faber wrote: > > LIKE(func.LOWER(what), pattern.lower()) > > Thank you, that would work and it's standard, too ;) Well, at least it's more standart than ILIKE. Still, different SQL DBMS name the function differently. :( Oleg. -- Oleg Broytmann http://phd.pp.ru/ ph...@ph... Programmers don't die, they just GOSUB without RETURN. |
From: Faber <zan...@in...> - 2005-05-27 12:48:01
|
On Friday 27 May 2005 14:42, Oleg Broytmann wrote: > > > LIKE(func.LOWER(what), pattern.lower()) > > > > Thank you, that would work and it's standard, too ;) > > Well, at least it's more standart than ILIKE. Still, different SQL > DBMS name the function differently. :( Is there a special text column type (or flag) to specify that the content should be queried case insensitive? In PostgreSQL or other DBMS, I mean... -- Faber http://www.faberbox.com/ Don't code today what you can't debug tomorrow. -- Ariya Hidayat |
From: Stuart B. <st...@st...> - 2005-06-29 03:11:58
Attachments:
signature.asc
|
Oleg Broytmann wrote: > On Fri, May 27, 2005 at 02:36:18PM +0200, Faber wrote: > >>> LIKE(func.LOWER(what), pattern.lower()) >> >>Thank you, that would work and it's standard, too ;) > > > Well, at least it's more standart than ILIKE. Still, different SQL > DBMS name the function differently. :( I've wanted to implement this as LIKE(foo.q.column.lower(), patter.lower()) by adding the lower() method to the table.q.column type. Just never gotten around to it. -- Stuart Bishop <st...@st...> http://www.stuartbishop.net/ |