检测包含通配符的特定字符串并在PLPGSQL中隔离通配符

检测包含通配符的特定字符串并在PLPGSQL中隔离通配符,sql,postgresql,postgresql-9.4,Sql,Postgresql,Postgresql 9.4,在PostgreSQL 9.4 PLPGSQL中,是否可以检测字符串是否包含包含通配符的特定字符串并获取通配符,例如: IF NEW.my_string CONTAINS 'patternXYZ' THEN NEW.my_values := getXYZ(my_string) END IF; 这将导致新的.my_值包含XYZ,XYZ可以是字符串中的任何内容,但只能是3个字符 SELECT CASE WHEN (NEW.my_string like '%patternXYZ

在PostgreSQL 9.4 PLPGSQL中,是否可以检测字符串是否包含包含通配符的特定字符串并获取通配符,例如:

IF NEW.my_string CONTAINS 'patternXYZ' THEN
    NEW.my_values := getXYZ(my_string)
END IF;
这将导致新的.my_值包含XYZ,XYZ可以是字符串中的任何内容,但只能是3个字符

SELECT 
   CASE
   WHEN (NEW.my_string like '%patternXYZ%')
      THEN substring(NEW.my_string from '+pattern+') 
      ELSE '00'
   END AS data
FROM my_table;

Pattern应该是查询的参数。

XYZ应该是通配符,这是可以是任何字符的字符。所以我想当NEW.my_字符串像“%Pattern%”时,这会起作用,但是我需要Pattern后面的3个字符。我已经尝试了从“%Pattern%”中选择子字符串“patternXYZ”之类的操作;但是它不能很快工作,因为我得到的字符比简单的XYZ多了一点。@Michael Nielsen实际上我这里没有Postgre,所以不能说什么,会让你很快知道要工作,但是它优化了吗?:substring substring来自“%pattern_uuuuuuuuz%”的substring来自“%pattern_uuuuuuuuu%”的substring“patternXYZ”来自4