Welcome to WebmasterWorld Guest from 54.226.133.245

Forum Moderators: open

Message Too Old, No Replies

telling mysql to ignore specific characters on select queries

     
2:07 pm on Jan 31, 2009 (gmt 0)

Junior Member

5+ Year Member

joined:Jan 19, 2009
posts: 63
votes: 0


hey,
i have a table with a varchar field that i want to run 'select' queries on .

the thing is, that some (maybe even half) of the values of this field may contain dots (".") in them, and while searching for a pattern, i want mysql to ignore the dots,regex-alike .

e.g:
when looking for "my name is john"
it will find the records with the field values :
"my name is john",
"my.name.is.john"

10:56 pm on Feb 2, 2009 (gmt 0)

Full Member

10+ Year Member

joined:May 11, 2004
posts: 278
votes: 0


Using regex is slow, paintful and won't help.

What I can imagine, create an extra field in the table, with duplicate data, where all dots are replaced with spaces (unified).

Then, use that unified argument to perform searches.

So, for every f1 = "my name is john", there will be duplicate f2 = "my name is john", and for f1 = "my.name.is.john" duplicate will be f2 = "my name is john".

create table ZZZ (
f1 varchar(255),
f2 varchar(255)
);

insert into ZZZ (fa, f2) values (f1, preg_replace('/\./', ' ', $f2));

Then, "select * from ZZZ where f2 = 'my name is john'"

This method takes its amount of disk space, but is very fast (you can even use indexes).

And disk space is cheap today :-)

[edited by: Morgenhund at 11:02 pm (utc) on Feb. 2, 2009]