我需要在 postgresql 函数中解析电话号码。我正在使用水线 ORM,并且基本上是在 javascript 中进行此计算。现在我想将整个逻辑移动到 postgresql 存储函数。但瓶颈是 libphonenumber 库的可用性。它在 Node.js 中可用,但不确定如何在 postgresql 中使用它。
任何想法 ?
我需要在 postgresql 函数中解析电话号码。我正在使用水线 ORM,并且基本上是在 javascript 中进行此计算。现在我想将整个逻辑移动到 postgresql 存储函数。但瓶颈是 libphonenumber 库的可用性。它在 Node.js 中可用,但不确定如何在 postgresql 中使用它。
任何想法 ?
由于它在 C++ 和 JavaScript 中可用,因此您可以:
安装和加载 PL/V8 并将其用作 PL/V8 存储过程中的 JavaScript 库;或者
为 PostgreSQL 编写一个 C 扩展,通过将 C++ 函数包装在库的 C++ 版本中,将函数公开为 SQL 可调用函数。
不用说,前者可能更容易,除非你对 C 编程很熟悉。
已经有可用于libphonenumber的 C 绑定
CREATE EXTENSION pg_libphonenumber;
SELECT parse_phone_number('03 7010 1234', 'AU') = parse_phone_number('(03) 7010 1234', 'AU');
CREATE TABLE foo
AS
SELECT DISTINCT parse_phone_number(ph, 'AU')
FROM ( VALUES
('0370101234'),
('03 7010 1234'),
('(03) 7010 1234')
) AS t(ph);
在这里找到我的答案以获取更多信息