Class PatternSearch
It works as follows: The '%' character represents any sequence of characters. The '_' character represents some character.
Therefore, the pattern search 'Toby%' will find all rows that start with the string 'Toby' and end with any sequence of characters. The pattern 'T% Downer%' will find all names starting with T and containing 'Downer' somewhere in the end. The pattern '_at' will find all three letter words ending with 'at'.
NOTE: A 'ab%' type search is faster than a '%bc' type search. If the start of the search pattern is unknown then the entire contents of the column need to be accessed.
- Author:
- Tobias Downer
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic boolean
fullPatternMatch
(String pattern, String str, char escape_char) Matches a pattern against a string and returns true if it matches or false otherwise.static void
static boolean
patternMatch
(String pattern, String expression, char escape_char) This is the pattern match recurrsive method.static boolean
testSearch
(String pattern, String expression, boolean result)
-
Constructor Details
-
PatternSearch
public PatternSearch()
-
-
Method Details
-
testSearch
-
main
-
fullPatternMatch
Matches a pattern against a string and returns true if it matches or false otherwise. This matches patterns that do not necessarily start with a wild card unlike the 'patternMatch' method. -
patternMatch
This is the pattern match recurrsive method. It recurses on each wildcard expression in the pattern which makes for slightly better efficiency than a character recurse algorithm. However, patterns such as "_%_a" will result in many recursive calls.Returns true if the pattern matches.
NOTE: That "_%_" will be less efficient than "__%" and will produce the same result. NOTE: It requires that a wild card character is the first character in the expression. ISSUE: Pattern optimiser, we should optimise wild cards of type "%__" to "__%", or "%__%_%_%" to "____%". Optimised forms are identical in result and more efficient. This optimisation could be performed by the client during parsing of the LIKE statement. HACKING ISSUE: Badly formed wild cards may result in hogging of server side resources.
-