2016-11-10 3 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 поэтому она становится нулевой.

С другой руки оператора конкатенации || не игнорировать NULL как concat() функцию, поэтому результат ' ' 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 
Смежные вопросы