12

I'm trying to a simple concatenation in PostgreSQL and it keeps up throwing up an error message. I don't understand what I am doing wrong here.

select concat('abcde', 'fgh');
No function matches the given name and argument types. You might need to add explicit type casts.

select concat(cast('abcde' as text), cast('fgh' as text));
No function matches the given name and argument types. You might need to add explicit type casts.

I am using Postgres version 8.4.11. Please let me know what is going on.

4

3 に答える 3

20

concat 演算子は||であるため、機能するselect 'abcde' || 'fgh'はずです。また、@ jonathan.cone が提案したように、 docs を確認してください

于 2012-07-30T04:29:58.060 に答える
13

concat9.1 で追加されましたが、8.4 には存在しません。他の人が指摘したように、||演算子を使用してください。

8.4 のドキュメント9.1のドキュメントを比較すると、このconcat関数が 8.4 のドキュメントに存在しないことがわかります。

ドキュメントの上部にある「他のバージョンのこのページ」というバーを参照してください。古いバージョンで作業している場合や、Google 経由でページの古いバージョンへのリンクを見つけて新しいバージョンを使用している場合に、非常に便利です。正しいバージョンのドキュメントを見ていることを常に確認してください。

関数などの表に「最初に登場したバージョン」が含まれていればいいのですが、残念ながら含まれていません。

関数の可用性について混乱したことがある場合は、\dfin psql を使用して関数を一覧表示および検索できます。

たとえば、次の名前のすべての関数を一覧表示するにconcat\df concat

スキーマ内のすべての関数pg_catalog(組み込み関数) について\df pg_catalog.- 末尾のピリオドに注意して、psql に「pg_catalog という名前の関数」ではなく「スキーマ pg_catalog 内の任意の関数」を意味することを伝えます。

concat名前がuseで始まるすべての関数\df concat*

非常に強力なツールです。\dnスキーマ ( )、テーブル ( \dt) などを検索する場合も、同じ言語が機能します。

于 2012-07-30T06:46:52.870 に答える
1
select 'abcde' || 'fgh';

select cast('abcde' as text) || cast('fgh' as text);
于 2015-01-29T02:59:41.737 に答える