我有一个表 abc,其中一个列名,其中一些数据已编码,有些未编码。当我运行解码查询时,发现异常。如何处理。此表中有大量行。
create table abc
(
id serial primary key,
name varchar(500)
)
select decode(name,'base64') from abc;
发生异常:SQL状态:22023
现在如何将所有非编码数据转换为编码数据?或者我该如何处理这个异常。
我有一个表 abc,其中一个列名,其中一些数据已编码,有些未编码。当我运行解码查询时,发现异常。如何处理。此表中有大量行。
create table abc
(
id serial primary key,
name varchar(500)
)
select decode(name,'base64') from abc;
发生异常:SQL状态:22023
现在如何将所有非编码数据转换为编码数据?或者我该如何处理这个异常。
我可能会走开,因为这个问题非常模糊,但你可以尝试这样的事情:
PostgreSQL 使用POSIX 正则表达式。如果我们有一个正则表达式,我们可以查看输入是否匹配。如果是这样,则将其提供给解码,否则按原样返回。这个问题的答案为我们提供了一个这样的正则表达式,
请记住,解码返回
bytea
。我们name
在这里显式转换为 bytea,因为如果它不是 Base64,我们需要确保我们返回相同的类型。这看起来像这样,这将返回
name
如果输入看起来是 Base64,则解码为 Base64。name
原样。试试看..
现在请记住,这仍然是文本的二进制表示,并且是 base64 解码的。您可以使用将其输出为文本
convert_from