PostgreSQL函数中pgr_drivingDistance子查询字符串单引号转义问题
pgr_drivingDistance子查询字符串筛选的转义解决方法
针对你遇到的pgr_drivingDistance函数子查询中字符串筛选的单引号冲突问题,以下是两种可行的解决方式:
方法1:使用PostgreSQL美元引号(Dollar Quoting)
这是PostgreSQL推荐的字符串转义方式,能彻底避免单引号冲突。将外层包裹子查询的单引号替换为$$(或自定义唯一标记),内部字符串直接用单引号即可:
pgr_drivingDistance( $$SELECT id, source, target, cost, reverse_cost FROM edges WHERE col = 'some_string'$$, start_vid, dist, true )
如果你的SQL中本身包含$$,还可以自定义唯一标记避免冲突,比如:
pgr_drivingDistance( $myquery$SELECT id, source, target, cost, reverse_cost FROM edges WHERE col = 'some_string'$myquery$, start_vid, dist, true )
方法2:使用双单引号转义
这是SQL标准的单引号转义规则,在字符串内部的单引号前再加一个单引号,PostgreSQL会将连续的两个单引号解析为一个单引号:
pgr_drivingDistance( 'SELECT id, source, target, cost, reverse_cost FROM edges WHERE col = ''some_string''', start_vid, dist, true )
如果之前尝试转义未成功,大概率是语法细节出错,比如美元引号未完整包裹整个子查询、双单引号的数量不对,仔细核对即可。
内容的提问来源于stack exchange,提问作者Marc
相关产品推荐
相关产品推荐

