PostgreSQL错误:函数to_tsvector(字符变化,未知)不存在

PostgreSQL错误:函数to_tsvector(字符变化,未知)不存在,第1张

PostgreSQL错误:函数to_tsvector(字符变化,未知)不存在

使用显式类型转换

SELECt language, to_tsvector(language **::regconfig** , 'hello world') FROM languages;

或更改列

languages.language
输入
regconfig

为什么?

Postgres允许函数重载。函数签名是由它们的(可选的,由 模式 限定的) 名称 加上 输入参数类型
(的列表)定义的。

to_tsvector()
期望类型的2参数形式
regconfig

作为第一个参数:

SELECt proname, pg_get_function_arguments(oid)FROM   pg_catalog.pg_procWHERe  proname = 'to_tsvector'   proname   | pg_get_function_arguments-------------+--------------------------- to_tsvector | text to_tsvector | regconfig, text  -- you are here

如果没有现有函数 完全
匹配,则“函数类型解析”规则将确定最佳匹配-如果有的话。这是成功的

to_tsvector('english', 'helloworld')
,因为
'english'
它是 无类型的字符串文字 。但由于 键入
varchar
了参数而失败,因为没有从到的已注册
隐式
强制类型
varchar
转换
regconfig
。手册:

丢弃输入类型不匹配且无法转换(使用 隐式 转换)匹配的候选函数。为此目的, 未知的文字 被假定可以转换为任何东西。

大胆强调我的。
已注册的演员表

regconfig

SELECt castsource::regtype, casttarget::regtype, castcontextFROM   pg_catalog.pg_castWHERe  casttarget = 'regconfig'::regtype; castsource | casttarget | castcontext------------+------------+------------- oid        | regconfig  | i bigint     | regconfig  | i smallint   | regconfig  | i integer    | regconfig  | i

解释

castcontext

castcontext char

指示可以在其中调用转换的上下文。
e
仅表示为显式转换(使用
CAST
::
语法)。
a

意味着隐式分配给目标列以及显式分配。
i
和其他情况一样,在表达式中隐含地表示。

在CREATE CAST一章中了解有关三种不同 类型分配的
更多信息。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5508840.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-13
下一篇 2022-12-13

发表评论

登录后才能评论

评论列表(0条)

保存