Reputation: 641
I want to use a substring in a CASE
statement that if it returns true
then it will return whatever is in the THEN
clause, such as:
CASE
WHEN substring(name, '\d\s\d{8}') THEN 'Long Name'
END
Upvotes: 0
Views: 154
Reputation: 35583
If you need the substring() you then need to evaluate the string that is returned by the substring function:
case
when substring('foobar' from '\d\s\d{8}') IS NOT NULL then 'Long Name'
else 'Short Name'
end
Upvotes: 1
Reputation: 656616
Since you only need a boolean result, use a simple regular expression instead of the function substring()
:
CASE WHEN name ~ '\d\s\d{8}' THEN 'Long Name' END
You can use the same regex pattern. Defaults to NULL
if the pattern is not found.
Upvotes: 2