我试图检查一个部件编号字段是否有科学的表示法值,并想出了这个简单的解决方案:
SELECT count(*) as overall,
count(*) filter (where partnumber ilike '%E+%') as matches
FROM mytable
WHERE partnumber ilike '%E+%';有些字符串不是科学数字。例如:
WS-X4748-UPOE+E=我怎样才能识别科学数字?
我试过这个:
WHERE partnumber ilike '[0-9]%E+%[0-9]'但这似乎不管用。
发布于 2020-08-03 22:37:58
这样可以做到:
SELECT count(*) AS overall
, count(*) FILTER (WHERE partnumber ~* '^[-+]?\d*\.?\d+e[-+]?\d+~*是不区分大小写的正则表达式匹配运算符.模式'^[-+]?\d*\.?\d+e[-+]?\d+只适用于E-表示法中的数字(没有空格)。手册中的详细信息。) AS matches
FROM mytable
-- WHERE .. -- no outer WHERED1是不区分大小写的正则表达式匹配运算符.
模式D2只适用于E-表示法中的数字(没有空格)。
C3中的详细信息。
只适用于E-表示法中的数字(没有空格)。
C3中的详细信息。
) AS matches FROM mytable -- WHERE .. -- no outer WHERE
D1是不区分大小写的正则表达式匹配运算符.
模式D2只适用于E-表示法中的数字(没有空格)。
C3中的详细信息。
https://dba.stackexchange.com/questions/273106
复制相似问题