You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

PostgreSQL正则提取单引号前含小数数字报错问题咨询

解决PostgreSQL正则表达式中单引号的转义问题

这问题我太熟悉了!你碰到的是SQL里字符串单引号转义的经典坑——因为PostgreSQL用单引号来界定字符串常量,所以你正则表达式里的(?=')里的单引号会被数据库误判成字符串的结束标记,直接导致语法错误。

修正后的SQL语句

把正则里的单个单引号改成两个连续的单引号就搞定了,这是SQL标准的单引号转义方式:

SUBSTRING(long_text, '[+-]?([0-9]+([.][0-9]*)?|[.][0-9]+)(?='')') as substring_feet

为什么这么改?

在PostgreSQL的字符串中,两个连续的单引号会被解析成一个实际的单引号字符。这样你的正则表达式里的正向预查(?='')就会正确匹配目标文本里的单个单引号,而不会提前截断你的正则字符串。

举个实际例子

如果你的long_text字段值是:

'19.5' feet tall 或者 '-0.75' inch

用修正后的语句就能精准提取出19.5-0.75,完全符合你想要的“提取单引号前的数字(含小数、正负号)”的需求。

内容的提问来源于stack exchange,提问作者Beeman

火山引擎 最新活动