2016-11-10 25 views
2

こんにちは私はpsqlを使い慣れていないので、関数内で変数としてVARCHARを持つという問題があり、その前後に空白を追加したいと思います。このような何か:psqlテキストに空白を追加する

CREATE FUNCTION func(word VARCHAR) 
RETURNS VARCHAR 
AS 
$word2$ 
DECLARE 
word VARCHAR; 
word2 VARCHAR; 
BEGIN 
word2 = ' ' word ' ' ; 
RETURN word2; 
END; 
$word2$ 
LANGUAGE plpgsql ; 

は、迅速かつ簡単な方法はありますか?おかげさまで

+0

あなたが '' ||演算子で文字列を連結することができます。https://www.postgresql.org/docs/9.1/static/functions-string.html – Enwired

答えて

0

あなたが宣言:あなたは同じ名前の引数を持っている

word VARCHAR; 

とはまだありません:

CREATE FUNCTION func(word VARCHAR) 

何が起こるかです:あなたはそれを再宣言するので関数は、引数の単語を無視します。 docsから:DEFAULT句が指定されない場合、

変数がSQL NULL値

に初期化されますので、それがゼロになる:= 'come value'word VARCHAR後がありません。一方の連結演算子||

NULLconcat()としての機能を無視していないので、' ' word ' 'の結果は、常に、どんなNULLなりません。ここで

は、作業機能の例です。

t=# CREATE OR REPLACE FUNCTION func(word VARCHAR) 
RETURNS VARCHAR 
AS 
$word2$ 
BEGIN 
    RETURN ' '||word||' '; 
END; 
$word2$ 
LANGUAGE plpgsql ; 
CREATE FUNCTION 
Time: 13.018 ms 
t=# select func('text'); 
    func 
-------- 
    text 
(1 row) 

Time: 0.260 ms 
関連する問題