明示的な型キャストを使用する:
SELECT language, to_tsvector(language::regconfig, 'hello world') FROM languages;
または、列languages.language
を変更します regconfig
と入力します 。 @Swavの回答を参照してください。
なぜですか?
Postgresは関数のオーバーロードを許可します。関数のシグネチャは、(オプションでスキーマ)によって定義されます。 -修飾)名前 プラス(のリスト)入力パラメータタイプ (s)。 to_tsvector()
の2パラメータ形式 タイプregconfig
が必要です 最初のパラメータとして:
SELECT proname, pg_get_function_arguments(oid)
FROM pg_catalog.pg_proc
WHERE proname = 'to_tsvector'
proname | pg_get_function_arguments
-------------+---------------------------
to_tsvector | text
to_tsvector | regconfig, text -- you are here
完全に一致する既存の関数がない場合 、関数型解決のルールが最適な一致を決定します-もしあれば。これはto_tsvector('english', 'hello world')
で成功します 、'english'
型なし文字列リテラルであること 。ただし、入力されたvarchar
パラメータで失敗します 、登録された暗黙的がないため varchar
からキャスト regconfig
へ 。マニュアル:
入力タイプが一致せず、変換できない候補関数を破棄します(暗黙的を使用) 変換)一致する。 不明な文字 この目的のために何にでも変換可能であると想定されています。
大胆な強調鉱山。regconfig
の登録キャスト :
SELECT castsource::regtype, casttarget::regtype, castcontext
FROM pg_catalog.pg_cast
WHERE 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
は、式やその他の場合に暗黙的に意味します。
3つの異なるタイプの割り当てについてもっと読む CREATECASTの章で。