当前位置: 首页 > 知识库问答 >
问题:

如何在postgresql中插入引号[重复]

萧远
2023-03-14

如何插入双引号

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[] );

如何使用存储过程插入上述数据??

共有1个答案

吕霄
2023-03-14

我没有完全阅读您的问题,但请参阅Postgres文档中的quote_identquote_literal,了解可能适合您需要的报价技巧。

否则,您可能需要以下内容:

SELECT * from test_insert( E'{1,ab\'c,pqr}'::TEXT[] );
 类似资料:
  • 问题内容: 几个月前,我从关于Stack Overflow的答案中学到了如何使用以下语法在MySQL中一次执行多个更新: 我现在已经切换到PostgreSQL,显然这是不正确的。它指的是所有正确的表,因此我认为这是使用不同关键字的问题,但是我不确定在PostgreSQL文档的哪个地方覆盖了这个问题。 为了澄清,我想插入几件事,如果它们已经存在,请对其进行更新。 问题答案: 自9.5版起的Postg

  • 这里一个非常常见的问题是如何执行upsert,MySQL称之为,标准支持将其作为操作的一部分。 鉴于PostgreSQL不直接支持它(在PG9.5之前),您如何做到这一点?考虑以下几点: 现在假设您要“upsert”元组,,那么新的表内容将是: 在Insert中,关于PostgreSQL中的重复更新?详细讨论了这个主题,但这是关于MySQL语法的替代方法,随着时间的推移,它增加了一些无关的细节。我

  • 查询工作正常,并返回列中有的所有记录。 但是,如果我想获取在中存在的所有记录,我就无法形成正确的查询。 查询不转义单引号,而是按字面意思转义,导致查询不完整。

  • 这里一个非常常见的问题是如何执行upsert,MySQL称之为,标准支持将其作为操作的一部分。 鉴于PostgreSQL不直接支持它(在PG9.5之前),您如何做到这一点?考虑以下几点: 现在假设您要“upsert”元组,,那么新的表内容将是: 这就是人们在讨论时所谈论的。至关重要的是,在同一表上存在多个事务的情况下,任何方法都必须是安全的--要么使用显式锁定,要么以其他方式防止产生的竞争条件。

  • 问题内容: 我在使用java.text.MessageFormat对象时遇到问题。 我正在尝试创建SQL插入语句。问题是,当我做这样的事情时: 我得到这个的价值: 如您所见,问题在于用单引号引起来的任何目标位置都不会被参数替换。我已经尝试过使用像这样的双单引号和这样的转义字符:但它仍然给出相同的结果。 编辑:我忘了提到我也尝试过。结果是:。它保留了原始引号,但仍未插入值。 我该如何解决这个问题?作

  • 问题内容: 例如,运行查询并查看输出后, 我的输出如下 我将如何导出这些数据,使其看起来如下所示? 还是有一种方法可以在SQL中执行此操作以修改记录以包含引号? 因为在导出时,无论如何都会包含逗号,对吗? 问题答案: 如果您感兴趣的列不超过128个字符,则可以使用QUOTENAME函数。小心一点,因为任何超过128个字符的字符都会返回。