模式匹配不适用于不同版本的PostgreSQL
从查询中获取数据时,我正在尝试将字符串模式与我的regex模式匹配不适用于不同版本的PostgreSQL,postgresql,postgresql-9.5,postgresql-9.0,Postgresql,Postgresql 9.5,Postgresql 9.0,从查询中获取数据时,我正在尝试将字符串模式与我的regex'^\\d[0-9]*\/\d[0-9]*\/\d[0-9]*'匹配。它在PostgreSQL 9.5.4版上运行良好,但在我的生产服务器9.0.4版上不起作用 我需要在正则表达式中做哪些修改才能使其与PostgreSQL 9.0.4版兼容 查询: Select * from table where column_name ~ '^\d[0-9]*\/\d[0-9]*\/\d[0-9]*' 我尝试了postgres doc()中建议的E
'^\\d[0-9]*\/\d[0-9]*\/\d[0-9]*'
匹配。它在PostgreSQL 9.5.4版上运行良好,但在我的生产服务器9.0.4版上不起作用
我需要在正则表达式中做哪些修改才能使其与PostgreSQL 9.0.4版兼容
查询:
Select * from table where column_name ~ '^\d[0-9]*\/\d[0-9]*\/\d[0-9]*'
我尝试了postgres doc()中建议的
E'^\\d[0-9]*\/\d[0-9]*\/\d[0-9]*'
,但它不起作用。postgres 9.0不再受支持。9.0.4缺少4年的错误修复。您至少应该升级到9.0.23,其中包括许多正则表达式的错误修复。您不需要转义前斜杠/
(既不转义文本,也不转义模式匹配)。而且,\d
是[0-9]
。如果我答对了,您需要'^\d+/\d+/\d+'
或转义文字:E'^\\d+/\\d+/\\d+'
谢谢pozs“E'^\\d+/\\d+/\\d+/\\d+”,它对我有用。:-)是的,我错过了\d和[0-9]是一样的。