LifeinAsia

msg:4188758 | 6:09 pm on Aug 18, 2010 (gmt 0) |
You'll probably need to use regular expressions. I have very limited experience with regular expressions, so hopefully someone with more experience can suggest the exact format to try.
|
fahad direct

msg:4188769 | 6:44 pm on Aug 18, 2010 (gmt 0) |
I am trying but unable if some can help me out.
|
rocknbil

msg:4188855 | 9:14 pm on Aug 18, 2010 (gmt 0) |
select 'abc-def' regexp '^[[:alnum:]]+-*[[:alnum:]]+$'; --> 1 (true) select 'ABC-DEF' regexp '^[[:alnum:]]+-*[[:alnum:]]+$'; --> 1 select 'abcdef' regexp '^[[:alnum:]]+-*[[:alnum:]]+$'; --> 1 select '@#-def' regexp '^[[:alnum:]]+-*[[:alnum:]]+$'; --> 0 (false) ^ = string starts with [[:alnum:]] = alphanumeric character class, case insensitive + = one or more of the preceding * = zero or more of the preceding, making the - optional $ end of string, preceded by a rinse/repeat of alnum mySQL regexps [dev.mysql.com]
|
fahad direct

msg:4188917 | 1:05 am on Aug 19, 2010 (gmt 0) |
Thanks for the helpful reply, could you please help me to make a select statement to search abc-def by using abcdef in where clause, please correct me if I am wrong: select field from table where field like 'abcdef' regexp '^[[:alnum:]]+-*[[:alnum:]]+$';
|
rocknbil

msg:4189353 | 4:39 pm on Aug 19, 2010 (gmt 0) |
I don't think you're going to be able to do that. The regexp must match the data, not the other way around, and you're asking to insert a character where there isn't one in the string, and it really can be anywhere. You could preprocess the input so it's like this, and do a long series of "or's": where field = 'a-bcdef' or field = 'ab-cdef' or field = 'abc-def' .... but that would be extremely unwieldy. You should probably re-think your front end, like <p>Enter your product code:</p> <p><label for="code-prefix">Prefix:</label> <input type="text" name="code-prefix" id="code-prefix"> <label for="code-suffix">Suffix:</label> <input type="text" name="code-suffix" id="code-suffix"></p> Then you can do $term = $_POST['code-prefix'] . '-' . $term = $_POST['code-sufffix']; .... where field='$term'; This would be faster, more efficient, and less error prone anyway.
|
whoisgregg

msg:4189398 | 6:08 pm on Aug 19, 2010 (gmt 0) |
You could create an additional column that has all hyphens removed from it. UPDATE `table` SET `search_column` = REPLACE(`sku`, '-', ''); Then just run your queries against `search_column` instead of against `sku`. Whenever someone does an UPDATE/INSERT just make sure you are populating your `search_column` value properly. :)
|
rocknbil

msg:4189848 | 3:45 pm on Aug 20, 2010 (gmt 0) |
There you go . . . then if someone does the dash, you can either just preg_replace the dash on input or do . . . where dashfield='$val' or nondashfield='$val'.
|
|