To continue reading for free, register below or login
To read more you must become a member of SearchOracle.com
');
// -->

Here's a really simple "trick" you can use: just concatenate a dash
onto the end of the column when searching for the position of the
first dash.
SELECT SUBSTRING(
p1.location
FROM 1
FOR POSITION('-' IN p1.location||'-') - 1
)
FROM daTable AS p1
In this query, the SUBSTRING and POSITION functions are the
standard SQL versions of these functions. These functions behave
just as you would expect. Your particular database system
may have slightly different names and syntax for these functions, but
they will work the same way.
When the column value contains a dash, you get the expected result.
For example, consider the value:
SE.108.050.043ERTO-0FTA
This value is 23 characters long, and contains a dash at position 19.
When we concatenate the extra dash to the end of this value, it becomes:
SE.108.050.043ERTO-0FTA-
However, the POSITION function will find the first dash at
position 19. Then we subtract 1 from this position number, giving 18, and
use this as the length of the substring to be extracted:
SE.108.050.043ERTO
Now let's consider the case where the column value contains no dash,
such as:
SE.045.000.011EMFJ
This value is 18 characters long.
When we concatenate the dash to the end of this value, it becomes:
SE.108.050.043EMFJ-
The POSITION function will find the extra dash which we concatenated
to the end, at position 19. Subtracting 1 gives 18, which just happens
to be the length of the original column value.
So in this case, the SUBSTRING function returns the entire value.
Neat, eh?
|