patternModerate
Emulate REGEXP like behaviour in DB2 SQL
Viewed 0 times
sqllikedb2regexpbehaviouremulate
Problem
I posted the same on stackoverflow (please, let me know if I have to delete one).
I'm working on a DB2 database and as far as I can see regexp is not supported (without additional libraries).
So I cannot implement something similar to what is explained in this article "Bringing the Power of Regular Expression Matching to SQL"
Do you know if I can "emulate", with a SQL statement, a regular expression like this?
^a[aofdmep]{1}[a-z]{1}[a-z0-9]{4}[sidbfkfpo]{1}
Edit
In the above hypothesis I found that it's acceptable for my case a WHERE Like predicate:
WHERE USER_NAME NOT LIKE 'a_______'
But it's a unsafe and doesn't cover other cases where I don't have a fixed char that I can match.
I'm working on a DB2 database and as far as I can see regexp is not supported (without additional libraries).
So I cannot implement something similar to what is explained in this article "Bringing the Power of Regular Expression Matching to SQL"
Do you know if I can "emulate", with a SQL statement, a regular expression like this?
^a[aofdmep]{1}[a-z]{1}[a-z0-9]{4}[sidbfkfpo]{1}
Edit
In the above hypothesis I found that it's acceptable for my case a WHERE Like predicate:
WHERE USER_NAME NOT LIKE 'a_______'
But it's a unsafe and doesn't cover other cases where I don't have a fixed char that I can match.
Solution
Since this old question has been dug up anyway, I'll mention that you can use the built-in XQuery support in DB2 for regular expression matching, something along the lines of
select whatever
from users
where
xmlcast(
xmlquery('fn:matches($USER_NAME,"^a[aofdmep][a-z][a-z0-9]{4}[sidbfkfpo]")')
as integer) = 1XMLQUERY above calls the XQuery matches function against the column USER_NAME. The result is an XML boolean, so the XMLCAST is used to convert it to an SQL data type.Code Snippets
select whatever
from users
where
xmlcast(
xmlquery('fn:matches($USER_NAME,"^a[aofdmep][a-z][a-z0-9]{4}[sidbfkfpo]")')
as integer) = 1Context
StackExchange Database Administrators Q#651, answer score: 12
Revisions (0)
No revisions yet.