我想知道 PostgreSQL 中是否有内置的方法可以将整数值转换为数字?
例如,是否可以将整数10
转换为字符串TEN
。
谢谢你。
没有什么内置的。对于这类事情,您最好的选择是使用 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。
试试这个查询:
SELECT split_part (cash_words (10::VARCHAR::MONEY), 'dollar', 1);
它是 PostgreSQL 的内部函数。