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. |
translate
getCode
public 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 AliasModifier
function
- the LOCATE function that may need to be modifiedprotected LanguageFactory getLanguageFactory()
LanguageFactory
set during construction.ILanguageFactory
instanceCopyright © 2018 JBoss by Red Hat. All rights reserved.