不能在postgresql中使用字符串函数

时间:2018-05-06 20:37:19

标签: postgresql

我对postgresql函数有一些问题。 我的表名是人,姓名是文本,年份是整数。

我喜欢写这样的函数:

create function add() returns void as '
insert into people(name, year) VALUES ('danilo', 12)

' LANGUAGE SQL;

我无法插入字符串,例如danilo。

错误:“danilo”或其附近的语法错误

我试过

...
insert into people(name, year) VALUES ( \'danilo\', 12)
...

但不起作用。

这完美无缺:

...insert into people( year) VALUES ( 12)...

这也是:

create function add(text) returns void as '
insert into people(name, year) VALUES ($1, 12)

' LANGUAGE SQL;

select add('danilo');

但是我该怎么做:

...
insert into people(name, year) VALUES ('danilo', 12)
...

任何人都可以帮助我吗?

谢谢。

3 个答案:

答案 0 :(得分:1)

你的案例很好,为什么PostgreSQL有自定义字符串分隔符 - 符号$some$。自定义字符串分隔符应该成对使用。

postgres=# select $_$Hello$_$;
 ?column? 
----------
 Hello
(1 row)

撇号没有问题

postgres=# select $_$He'llo$_$;
 ?column? 
----------
 He'llo
(1 row)

所以你的代码应该看起来像

create function add(text)
returns void as $$
insert into people(name, year) VALUES ('Hello', 12)
$$ LANGUAGE SQL;

答案 1 :(得分:0)

我有答案:

使用''danilo'',加倍'

通过加倍单引号''

create function add() returns void as '
insert into people(name, year) VALUES (''danilo'', 12)

' LANGUAGE SQL;

答案 2 :(得分:0)

你必须以双单引号逃脱

create function add() returns void as '
insert into people(name, year) VALUES (''danilo'', 12)
' LANGUAGE SQL;