public class LocateFunctionModifier extends AliasModifier
locate(search_string, source_string) and
locate(search_string, source_string, start_index) to a function
or expression that can be used at the data source.
If the default implementation is used, a function name of LOCATE will be used for the function name.
If the default implementation is used, the expression will not be modified if:
locate(search_string, source_string) is usedlocate(search_string, source_string, start_index) is used
and start_index is a literal integer greater then 0If the default implementation is used, the expression will be modified if:
locate(search_string, source_string, start_index) is used
and start_index is a literal integer less then 1locate(search_string, source_string, start_index) is used
and start_index is not a literal integerIf the default implementation is used and the expression is modified, it is modified to ensure that any literal integer value less than 1 is made equal to 1 and any non literal value is wrapped by a searched case expression to ensure that a value of less then 1 will be equal to 1 and the parameter order matches that of what the data source expects.
For example:
locate('a', 'abcdef') --> LOCATE('a', 'abcdef')locate('a', 'abcdef', 2) --> LOCATE('a', 'abcdef', 2)locate('a', 'abcdef', 0) --> LOCATE('a', 'abcdef', 1)locate('a', 'abcdef', intCol) --> LOCATE('a', 'abcdef', CASE WHEN intCol < 1 THEN 1 ELSE intCol END)| Modifier and Type | Field and Description |
|---|---|
static String |
LOCATE |
alias| Constructor and Description |
|---|
LocateFunctionModifier(LanguageFactory langFactory)
Translates the scalar function LOCATE() to a source specific scalar
function or expression.
|
LocateFunctionModifier(LanguageFactory langFactory,
String functionName,
boolean sourceStringFirst)
Translates the scalar function LOCATE() to a source specific scalar
function or expression.
|
| Modifier and Type | Method and Description |
|---|---|
protected LanguageFactory |
getLanguageFactory()
Get the instance of
LanguageFactory set during construction. |
void |
modify(Function function)
Returns a version of
function suitable for executing at the
data source. |
translategetCodepublic static String LOCATE
public LocateFunctionModifier(LanguageFactory langFactory)
langFactory - the language factory associated with translationpublic LocateFunctionModifier(LanguageFactory langFactory, String functionName, boolean sourceStringFirst)
langFactory - the language factory associated with translationfunctionName - the function name or alias to be used instead of LOCATEsourceStringFirst - public void modify(Function function)
function suitable for executing at the
data source.
For example:
locate('a', 'abcdefg') ---> LOCATE('a', 'abcdefg')locate('a', 'abcdefg', 1) ---> LOCATE('a', 'abcdefg', 1)locate('a', 'abcdefg', 1) ---> INSTR('abcdefg', 'a', 1)locate('a', 'abcdefg', -5) ---> INSTR('abcdefg', 'a', 1)locate('a', 'abcdefg', 1) ---> FINDSTR('a', 'abcdefg', 1)locate('a', 'abcdefg', myCol) ---> LOCATE('a', 'abcdefg', CASE WHEN myCol < 1 THEN 1 ELSE myCol END)
modify in class AliasModifierfunction - the LOCATE function that may need to be modifiedprotected LanguageFactory getLanguageFactory()
LanguageFactory set during construction.ILanguageFactory instanceCopyright © 2019. All rights reserved.