相关疑难解决方法(0)

在PostgreSQL中插入带单引号的文本

我有一张桌子test(id,name).

我需要插入样值: user's log,'my user',customer's.

 insert into test values (1,'user's log');
 insert into test values (2,''my users'');
 insert into test values (3,'customer's');
Run Code Online (Sandbox Code Playgroud)

如果我运行上述任何语句,我会收到错误.

如果有任何方法可以正确地做到这一点请分享.我不想要任何准备好的陈述.

是否可以使用sql转义机制?

postgresql quotes insert special-characters

377
推荐指数
5
解决办法
32万
查看次数

将数组文字传递给PostgreSQL函数

我有一个包含select语句的Postgres函数.我需要使用包含字符串值数组的传入变量添加条件.

CREATE OR REPLACE FUNCTION get_questions(vcode text)
  RETURN return_value as $f$
DECLARE vresult return_value;

BEGIN
--snip--

SELECT id, title, code
FROM questions WHERE code NOT IN (vcode);

--snip--
Run Code Online (Sandbox Code Playgroud)

questions 表:

id ,title, code
1, "title1", "qcode1"
2, "title2", "qcode2"
3, "title3", "qcode3"
4, "title4", "qcode4"
Run Code Online (Sandbox Code Playgroud)

如何vcode在PHP中格式化文字以及条件的语法应该是什么?

使用PostgreSQL 9.1.1,PHP 5.3.6 , pg_query_params.

php sql arrays postgresql parameter-passing

6
推荐指数
1
解决办法
2万
查看次数

估计 Postgres 索引的大小

我试图更好地了解创建 Postgres 索引所涉及的权衡。作为其中的一部分,我很想了解通常使用多少空间索引。我已经通读了文档,但找不到任何关于此的信息。我一直在做我自己的小实验来创建表和索引,但是如果有人能解释为什么大小是这样的,那就太棒了。假设一个像这样有 1M 行的公共表,其中每一行都有一个唯一的id和唯一的outstanding.

CREATE TABLE account (
    id integer,
    active boolean NOT NULL,
    outstanding double precision NOT NULL,
);
Run Code Online (Sandbox Code Playgroud)

以及由创建的索引

  • CREATE INDEX id_idx ON account(id)
  • CREATE INDEX outstanding_idx ON account(outstanding)
  • CREATE INDEX id_outstanding_idx ON account(id, outstanding)
  • CREATE INDEX active_idx ON account(active)
  • CREATE INDEX partial_id_idx ON account(id) WHERE active

你估计索引大小是多少字节,更重要的是,为什么?

postgresql indexing storage

5
推荐指数
2
解决办法
1158
查看次数

在 PL/pgSQL 函数中分割逗号分隔的字符串

我正在尝试编写一个函数,该函数将 ID 作为输入并更新该给定 ID 上的一些字段。到目前为止,它看起来像这样:

CREATE FUNCTION update_status(p_id character varying,
                              p_status character varying DEFAULT NULL::character varying) RETURNS character varying
    LANGUAGE plpgsql
AS
$$
DECLARE
    v_row_count bigint DEFAULT 0;
    v_result    varchar(255);
BEGIN
    
    IF p_id IS NOT NULL THEN
        SELECT count(user_id)
        INTO v_row_count
        FROM test
        WHERE user_id = p_id;
    END IF;

    IF v_row_count <= 0 THEN
        v_result = 'User not found';
        RETURN v_result;

    ELSE
        IF p_id NOT LIKE '%,%' THEN
            UPDATE test
            SET status     = p_status,
                updated_by = 'admin'
            WHERE user_id IN …
Run Code Online (Sandbox Code Playgroud)

sql postgresql plpgsql

2
推荐指数
1
解决办法
1079
查看次数