1

我想知道 PostgreSQL 中是否有内置的方法可以将整数值转换为数字?

例如,是否可以将整数10转换为字符串TEN

谢谢你。

4

2 回答 2

4

没有什么内置的。对于这类事情,您最好的选择是使用 PostgreSQL 的可插入过程语言。将 PL/Perl 或 PL/Python 与合适的 Perl 或 Python 库一起使用来完成这项工作。

在这种情况下,我可能会将 PL/Perl 与Lingua::EN::Numbers.

CREATE OR REPLACE FUNCTION num2en(numeric) RETURNS text AS $$
use Lingua::EN::Numbers qw(num2en);
return num2en($_[0]);
$$ LANGUAGE plperlu;

您需要先Lingua::EN::Numbers使用 CPAN 或系统包安装到 PostgreSQL 使用的 Perl。就我而言(Fedora 19),这是一个简单的yum install perl-Lingua-EN-Numbers.noarch,然后我可以:

regress=> SELECT num2en(10);
 num2en 
--------
 ten
(1 row)

regress=# SELECT num2en(NUMERIC '142.5');
                num2en                
--------------------------------------
 one hundred and forty-two point five
(1 row)

默认情况下,普通用户可以访问该功能,因此您不必发出任何额外GRANT的 s。

于 2013-08-19T12:37:40.420 回答
0

试试这个查询:

SELECT split_part (cash_words (10::VARCHAR::MONEY), 'dollar', 1);

它是 PostgreSQL 的内部函数。

于 2014-01-31T20:53:31.747 回答