在文本列中插入“$$”,POSTGRESQL
Insert "$$" in text column, POSTGRESQL
我目前在 postgresql 查询中遇到一个奇怪的问题,在文本列中插入字符串,我将解释:
我有一个 table 具有以下架构:
CREATE TABLE IF NOT EXISTS template_formula
(
ID SERIAL PRIMARY KEY ,
formula VARCHAR(500) DEFAULT NULL,
display VARCHAR(500) DEFAULT NULL
);
这个 table 将包含一个公式名称和一个包含 markdown 的显示字符串。
我的插入查询如下:
DO $$
BEGIN
BEGIN
--- Insert Template Formula
INSERT INTO template_formula(id,formula,display) VALUES
(7,'1000*(sin(deg2rad($A)))-(init($A)','$\textrm{Calcul IPI décrit comme :}$ $$R = 1000 \cdot (sin(degr2rad(A_i)))-A_0 $$ $\textrm{où :}$ $$ \textrm{$A_i$} = \textrm{Valeur courante de lecture} $$ $$ \textrm{$A_0$} = \textrm{Valeur initiale} $$')
END;
COMMIT;
END;
$$
当我尝试在 DBeaver 上执行此查询时,出现以下错误:
SQL Error [42601]: Unterminated dollar quote started at position 290 in SQL DO $$
此错误是由于插入到显示列的字符串中的“$$”造成的:
$$R = 1000
你知道如何将这两个字符转义为字符串吗?
感谢提前。
为 DO 块使用其他分隔符:
DO $do$
BEGIN
BEGIN
--- Insert Template Formula
INSERT INTO template_formula(id,formula,display) VALUES
(7,'1000*(sin(deg2rad($A)))-(init($A)','$\textrm{Calcul IPI décrit comme :}$ $$R = 1000 \cdot (sin(degr2rad(A_i)))-A_0 $$ $\textrm{où :}$ $$ \textrm{$A_i$} = \textrm{Valeur courante de lecture} $$ $$ \textrm{$A_0$} = \textrm{Valeur initiale} $$');
END;
COMMIT;
END;
$do$;
或者完全摆脱无用的DO块:
BEGIN TRANSACTION;
INSERT INTO template_formula(id,formula,display) VALUES
(7,'1000*(sin(deg2rad($A)))-(init($A)','$\textrm{Calcul IPI décrit comme :}$ $$R = 1000 \cdot (sin(degr2rad(A_i)))-A_0 $$ $\textrm{où :}$ $$ \textrm{$A_i$} = \textrm{Valeur courante de lecture} $$ $$ \textrm{$A_0$} = \textrm{Valeur initiale} $$');
COMMIT;
(您还忘记了 ;
来结束 INSERT
语句)
我目前在 postgresql 查询中遇到一个奇怪的问题,在文本列中插入字符串,我将解释:
我有一个 table 具有以下架构:
CREATE TABLE IF NOT EXISTS template_formula
(
ID SERIAL PRIMARY KEY ,
formula VARCHAR(500) DEFAULT NULL,
display VARCHAR(500) DEFAULT NULL
);
这个 table 将包含一个公式名称和一个包含 markdown 的显示字符串。
我的插入查询如下:
DO $$
BEGIN
BEGIN
--- Insert Template Formula
INSERT INTO template_formula(id,formula,display) VALUES
(7,'1000*(sin(deg2rad($A)))-(init($A)','$\textrm{Calcul IPI décrit comme :}$ $$R = 1000 \cdot (sin(degr2rad(A_i)))-A_0 $$ $\textrm{où :}$ $$ \textrm{$A_i$} = \textrm{Valeur courante de lecture} $$ $$ \textrm{$A_0$} = \textrm{Valeur initiale} $$')
END;
COMMIT;
END;
$$
当我尝试在 DBeaver 上执行此查询时,出现以下错误:
SQL Error [42601]: Unterminated dollar quote started at position 290 in SQL DO $$
此错误是由于插入到显示列的字符串中的“$$”造成的:
$$R = 1000
你知道如何将这两个字符转义为字符串吗? 感谢提前。
为 DO 块使用其他分隔符:
DO $do$
BEGIN
BEGIN
--- Insert Template Formula
INSERT INTO template_formula(id,formula,display) VALUES
(7,'1000*(sin(deg2rad($A)))-(init($A)','$\textrm{Calcul IPI décrit comme :}$ $$R = 1000 \cdot (sin(degr2rad(A_i)))-A_0 $$ $\textrm{où :}$ $$ \textrm{$A_i$} = \textrm{Valeur courante de lecture} $$ $$ \textrm{$A_0$} = \textrm{Valeur initiale} $$');
END;
COMMIT;
END;
$do$;
或者完全摆脱无用的DO块:
BEGIN TRANSACTION;
INSERT INTO template_formula(id,formula,display) VALUES
(7,'1000*(sin(deg2rad($A)))-(init($A)','$\textrm{Calcul IPI décrit comme :}$ $$R = 1000 \cdot (sin(degr2rad(A_i)))-A_0 $$ $\textrm{où :}$ $$ \textrm{$A_i$} = \textrm{Valeur courante de lecture} $$ $$ \textrm{$A_0$} = \textrm{Valeur initiale} $$');
COMMIT;
(您还忘记了 ;
来结束 INSERT
语句)