【问题标题】:PostgreSQL - what does symbol ||| do?PostgreSQL - 什么是符号 |||做?
【发布时间】:2012-12-02 11:41:26
【问题描述】:

我找到了这样的代码:

SELECT 'a' ||| 'b';

我试图用谷歌搜索这个运算符的含义,但谷歌忽略了符号数据。 SymbolHound 没有返回任何有意义的结果。

我在一台 PostgreSQL 8.4 服务器和 9.1 服务器上对其进行了测试。

在 PostgreSQL 8.4 中,它与字符串连接相同,但有一点不同:

SELECT 'a' ||| 'b'; -- 'ab'
SELECT 'a' || 'b'; -- 'ab'

SELECT 'a' ||| NULL; -- 'a'
SELECT 'a' || NULL; -- NULL

在 PostgreSQL 9.1 中,没有定义这个操作符。

SELECT 'a' ||| 'b'; -- ERROR
SELECT 'a' || 'b'; -- 'ab'
SELECT 'a' || NULL; -- NULL

这在某处有正式记录吗?这是特定于配置的吗?

【问题讨论】:

    标签: string postgresql concatenation operator-keyword


    【解决方案1】:

    ||| 不是 PostgreSQL 附带的标准运算符; as you can see here, it doesn't exist in stock 8.4 either。我会说有人在您的 8.4 安装中使用 CREATE OPERATOR 安装了它。

    尝试在 8.4 DB 中使用psql 命令\do(即“描述运算符”),或执行pg_dump 并检查转储中的运算符及其相关函数的定义。

    select * from pg_operator where oprname = '|||'; 也可能有用。注意oprcode 列,它显示了实现运算符的函数。

    【讨论】:

    • ||| 的特殊 NULL 行为颇具启发性。
    • 你是 100% 正确的,select * from pg_operator where oprname = '|||';返回的运算符,由函数“textcat_null”定义。
    猜你喜欢
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-03
    • 1970-01-01
    相关资源
    最近更新 更多