【发布时间】:2014-08-15 16:29:01
【问题描述】:
我需要检查表中的列是否具有数字值后跟小数点和小数点后 3 个精度。请建议如何在 postgre SQL(或)任何其他替代方法中使用正则表达式。
谢谢
【问题讨论】:
标签: regex postgresql
我需要检查表中的列是否具有数字值后跟小数点和小数点后 3 个精度。请建议如何在 postgre SQL(或)任何其他替代方法中使用正则表达式。
谢谢
【问题讨论】:
标签: regex postgresql
数字、句点和数字的基本正则表达式是\d+\.\d{3}
您可以将它用于多种用途,例如:
1.为您的列定义添加约束
ALTER TABLE mytable ADD (CONSTRAINT mycolumn_regexp CHECK (mycolumn ~ $$^\d+\.\d{3}\Z$$));
2。查找不匹配的行
SELECT * FROM mytable WHERE mycolumn !~ $$^\d+\.\d{3}\Z$$;
3.查找匹配的行
SELECT * FROM mytable WHERE mycolumn ~ $$^\d+\.\d{3}\Z$$;
【讨论】:
') 可以用来代替 $$,因为它们可以互换? (来自What are '$$' used for in PL/pgSQL 和4.1.2.4. Dollar-Quoted String Constants。)