Thread: locale and spanish acute
I'm doing some searches with LIKE and have a problem with words with acute vocals. I would like más to be treated the same way as mas, and vice-verse. Is this because I don't have the locale set correctly? Saludos... ;-) -- Porqué usar una base de datos relacional cualquiera, si podés usar PostgreSQL? ----------------------------------------------------------------- Martín Marqués | mmarques@unl.edu.ar Programador, Administrador, DBA | Centro de Telematica Universidad Nacional del Litoral -----------------------------------------------------------------
Martín Marqués writes: > I'm doing some searches with LIKE and have a problem with words with acute > vocals. I would like más to be treated the same way as mas, and vice-verse. > > Is this because I don't have the locale set correctly? No, it's because it doesn't work that way. What you probably want to do is "accent-fold" your strings before sending them through pattern matching. -- Peter Eisentraut peter_e@gmx.net http://funkturm.homeip.net/~peter
On Mié 12 Sep 2001 20:10, you wrote: > Martín Marqués writes: > > I'm doing some searches with LIKE and have a problem with words with > > acute vocals. I would like más to be treated the same way as mas, and > > vice-verse. > > > > Is this because I don't have the locale set correctly? > > No, it's because it doesn't work that way. What you probably want to do > is "accent-fold" your strings before sending them through pattern > matching. What does "accent-fold" mean? -- Porqué usar una base de datos relacional cualquiera, si podés usar PostgreSQL? ----------------------------------------------------------------- Martín Marqués | mmarques@unl.edu.ar Programador, Administrador, DBA | Centro de Telematica Universidad Nacional del Litoral -----------------------------------------------------------------
Martín Marqués writes: > On Mié 12 Sep 2001 20:10, you wrote: > > Martín Marqués writes: > > > I'm doing some searches with LIKE and have a problem with words with > > > acute vocals. I would like más to be treated the same way as mas, and > > > vice-verse. > > > > > > Is this because I don't have the locale set correctly? > > > > No, it's because it doesn't work that way. What you probably want to do > > is "accent-fold" your strings before sending them through pattern > > matching. > > What does "accent-fold" mean? Convert all accented characters to some other characters in a way that is meaningful to you. -- Peter Eisentraut peter_e@gmx.net http://funkturm.homeip.net/~peter
On Mié 12 Sep 2001 21:52, Peter Eisentraut wrote: > Martín Marqués writes: > > > > What does "accent-fold" mean? > > Convert all accented characters to some other characters in a way that is > meaningful to you. OK, I think I got what you told me. lets see... I have this query: select count(*) from tab1 where col1 LIKE '%mas%' but I would like it to catch rows with "más" also. The only thing I can think of is makeing a function that applied to col1 would give me col1 but without accents. Say the function is called no_accents, so: no_accents(más)=mas Now, the problem is that I have little idea on making such a function. Is it very difficult? Saludos... :-) -- Porqué usar una base de datos relacional cualquiera, si podés usar PostgreSQL? ----------------------------------------------------------------- Martín Marqués | mmarques@unl.edu.ar Programador, Administrador, DBA | Centro de Telematica Universidad Nacional del Litoral -----------------------------------------------------------------
Martín Marqués writes: > select count(*) from tab1 where col1 LIKE '%mas%' > > but I would like it to catch rows with "más" also. > > The only thing I can think of is makeing a function that applied to col1 > would give me col1 but without accents. Say the function is called > no_accents, so: > > no_accents(más)=mas > > Now, the problem is that I have little idea on making such a function. Is it > very difficult? CREATE FUNCTION no_accents(text) RETURNS text AS ' my $arg = $_[0]; $arg =~ tr/áéëíñóú/aeeinou/; return $arg; ' LANGUAGE 'plperl'; Something similar should be possible in PL/Tcl if you prefer that. Or you bother with C and run a simple loop over the text string. -- Peter Eisentraut peter_e@gmx.net http://funkturm.homeip.net/~peter
On Fri, 2001-09-14 at 15:49, Peter Eisentraut wrote: > Martín Marqués writes: > > > select count(*) from tab1 where col1 LIKE '%mas%' > > > > but I would like it to catch rows with "más" also. select count(*) from tab1 where col1 ILIKE to_ascii($1) works for me. The variable is passed via .jsp Cheers Tony Grant -- RedHat Linux on Sony Vaio C1XD/S http://www.animaproductions.com/linux2.html Macromedia UltraDev with PostgreSQL http://www.animaproductions.com/ultra.html
On Lun 17 Sep 2001 04:31, Tony Grant wrote: > On Fri, 2001-09-14 at 15:49, Peter Eisentraut wrote: > > Martín Marqués writes: > > > select count(*) from tab1 where col1 LIKE '%mas%' > > > > > > but I would like it to catch rows with "más" also. > > select count(*) from tab1 where col1 ILIKE to_ascii($1) > > works for me. But I want it to work with más too. For that I would need to change that query for this one: select count(*) from tab1 where to_ascii(col1) ILIKE to_ascii($1) Right? Saludos... :-) -- Porqué usar una base de datos relacional cualquiera, si podés usar PostgreSQL? ----------------------------------------------------------------- Martín Marqués | mmarques@unl.edu.ar Programador, Administrador, DBA | Centro de Telematica Universidad Nacional del Litoral -----------------------------------------------------------------
On Mon, 2001-09-17 at 22:49, Martín Marqués wrote: > But I want it to work with más too. For that I would need to change that > query for this one: > > select count(*) from tab1 where to_ascii(col1) ILIKE to_ascii($1) > > Right? Right that will work because the content and the request is changed. Cheers Tony -- RedHat Linux on Sony Vaio C1XD/S http://www.animaproductions.com/linux2.html Macromedia UltraDev with PostgreSQL http://www.animaproductions.com/ultra.html