如何在PostgreSQL中插入引号
如何在PostgreSQL中插入引号
这个问题已经有了答案:
如何使用存储过程在postgres中插入双引号和单引号。
I have create the table as : CREATE TABLE public.test ( id INT, name varchar(50), lname varchar(100) ) WITH (oids = false);
2. 创建了用于插入该表的存储过程。
CREATE OR REPLACE FUNCTION test_insert( p_array in TEXT[] ) RETURNS TEXT AS $$ DECLARE arrstrMixrecordData ALIAS FOR $1; plid integer = 0; pid integer = arrstrMixrecordData[1]; pname varchar = arrstrMixrecordData[2]; plname varchar = arrstrMixrecordData[3]; BEGIN INSERT INTO test(id, name, lname) values (pid, pname, plname); plid = ( SELECT id from test ORDER BY id desc limit 1 ); plid = plid + 1; RETURN plid; END; $$ LANGUAGE plpgsql;
3. 使用此查询插入数据:
SELECT * from test_insert( '{1,abc,pqr}'::TEXT[] );
它有效!
4. 当双引号出现在单引号中,反之亦然时,所有以下组合均失败。
SELECT * from test_insert( '{1,ab"c,pqr}'::TEXT[] ); SELECT * from test_insert( "{1,ab'c,pqr}"::TEXT[] ); SELECT * from test_insert( "{1,ab"c,pqr}"::TEXT[] ); SELECT * from test_insert( '{1,ab'c,pqr}'::TEXT[] );
如何使用存储过程插入上述数据?
admin 更改状态以发布 2023年5月21日
我没有完整地阅读你的问题,但是请参考Postgres文档中的quote_ident
和quote_literal
以获取可能适合你需要的引用技术。
否则,你可能需要以下内容:
SELECT * from test_insert( E'{1,ab\'c,pqr}'::TEXT[] );