You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SQL中将列值全部用方括号包裹?

解决方法

你的SQL语句问题在于正则表达式的匹配逻辑:(.)会匹配每一个单个字符,执行后会把foo变成[f][o][o],而非你想要的[foo]。另外如果topics字段是NULL或空字符串,这条语句也不会产生任何可见修改。

正确实现方式(推荐)

直接用字符串拼接,比正则更高效:

UPDATE notes 
SET topics = '[' || topics || ']'
WHERE topics IS NOT NULL AND topics <> '';

用正则表达式实现的写法

如果一定要用regexp_replace,需要匹配整个字符串:

UPDATE notes 
SET topics = regexp_replace(topics, '^(.*)$', '[$1]')
WHERE topics IS NOT NULL AND topics <> '';
  • 正则^(.*)$表示匹配从开头(^)到结尾($)的所有字符,$1引用整个匹配内容,从而把整个值包裹在方括号里。
  • 加上WHERE条件是为了避免更新NULL或空值的行,这些行本来就不需要修改。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 13:46:29