在函数内使用字符串执行查询
Executing a query with string inside a function
我必须在函数内执行以下查询:
SELECT year FROM tbl_people WHERE personal_card = 'A5B123';
它returns一个整数。
问题是,我必须执行以下操作:
EXECUTE 'SELECT year FROM tbl_people WHERE personal_card = 'A5B123'';
但它将查询截断为:
SELECT year FROM tbl_people WHERE personal_card
我试过了:
EXECUTE "SELECT year FROM tbl_people WHERE personal_card = 'A5B123'";
但也失败了。
如何实现?
SQL 中的单引号 are escaped by doubling them:
EXECUTE 'SELECT year FROM tbl_people WHERE personal_card = ''A5B123''';
但是在 Postgres 中做这种事情更方便的方法是使用 dollar quoted strings:
EXECUTE $$SELECT year FROM tbl_people WHERE personal_card = 'A5B123'$$;
您可以像这样使用 quote_literal
函数:
EXECUTE 'SELECT year FROM tbl_people WHERE personal_card = ' || quote_literal('A5B123');
我必须在函数内执行以下查询:
SELECT year FROM tbl_people WHERE personal_card = 'A5B123';
它returns一个整数。
问题是,我必须执行以下操作:
EXECUTE 'SELECT year FROM tbl_people WHERE personal_card = 'A5B123'';
但它将查询截断为:
SELECT year FROM tbl_people WHERE personal_card
我试过了:
EXECUTE "SELECT year FROM tbl_people WHERE personal_card = 'A5B123'";
但也失败了。
如何实现?
SQL 中的单引号 are escaped by doubling them:
EXECUTE 'SELECT year FROM tbl_people WHERE personal_card = ''A5B123''';
但是在 Postgres 中做这种事情更方便的方法是使用 dollar quoted strings:
EXECUTE $$SELECT year FROM tbl_people WHERE personal_card = 'A5B123'$$;
您可以像这样使用 quote_literal
函数:
EXECUTE 'SELECT year FROM tbl_people WHERE personal_card = ' || quote_literal('A5B123');