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

SQL PARSENAME函数解析含方括号字符串返回NULL的解决方法咨询

问题分析

PARSENAME函数原本是用来解析SQL Server对象名(比如server.database.schema.table)的,它对字符串格式有严格限制:仅能处理符合标识符规则的内容,且最多支持4个分隔部分。你的代码里,替换逗号为点后,目标部分包含[Spanish],方括号的存在破坏了PARSENAME对标识符的解析逻辑,导致返回NULL。

解决方案

方案1:保留PARSENAME逻辑,先移除方括号

先把字符串中的[和]清除,再执行原有的替换和解析操作,就能正常获取目标内容:

SELECT PARSENAME(REPLACE(REPLACE('Academic: Teacher, Foreign Language - [Spanish], 5-12, Emergency', '[', ''), ']', ''), 3)

执行后会返回: Foreign Language - Spanish

方案2:使用OPENJSON拆分(SQL Server 2016+)

如果你的SQL Server版本支持OPENJSON,可以用更直观的方式拆分并准确定位目标部分(能保证返回顺序与原字符串一致):

SELECT value
FROM OPENJSON('["' + REPLACE('Academic: Teacher, Foreign Language - [Spanish], 5-12, Emergency', ',', '","') + '"]')
WHERE [key] = 1 -- 索引从0开始,对应原字符串中第二个逗号分隔的部分

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 18:39:55