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一章中了解有关三种不同 类型分配的
更多信息。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)