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

SQL Server如何将包含双引号的字符串替换为双引号内的内容

解决方案

核心逻辑是定位字符串中第一个和第二个双引号的位置,直接截取两个位置中间的内容即可,无需逐个定义替换规则。以下是不同主流数据库的实现代码:

  • MySQL
SELECT 
  SUBSTRING(
    `Pill Type`,
    LOCATE('"', `Pill Type`) + 1,
    LOCATE('"', `Pill Type`, LOCATE('"', `Pill Type`) + 1) - LOCATE('"', `Pill Type`) - 1
  ) AS `Pill Type`
FROM 你的表名;
  • SQL Server
SELECT 
  SUBSTRING(
    [Pill Type],
    CHARINDEX('"', [Pill Type]) + 1,
    CHARINDEX('"', [Pill Type], CHARINDEX('"', [Pill Type]) + 1) - CHARINDEX('"', [Pill Type]) - 1
  ) AS [Pill Type]
FROM 你的表名;
  • PostgreSQL
    可以直接用SPLIT_PART按双引号分割取第二部分,写法更简洁:
SELECT SPLIT_PART("Pill Type", '"', 2) AS "Pill Type"
FROM 你的表名;
  • Oracle
SELECT 
  SUBSTR(
    "Pill Type",
    INSTR("Pill Type", '"') + 1,
    INSTR("Pill Type", '"', 1, 2) - INSTR("Pill Type", '"') - 1
  ) AS "Pill Type"
FROM 你的表名;

如果存在部分行没有双引号的场景,可以增加判断逻辑避免返回异常结果,以MySQL为例:

SELECT 
  IF(
    LOCATE('"', `Pill Type`) > 0 AND LOCATE('"', `Pill Type`, LOCATE('"', `Pill Type`) + 1) > 0,
    SUBSTRING(
      `Pill Type`,
      LOCATE('"', `Pill Type`) + 1,
      LOCATE('"', `Pill Type`, LOCATE('"', `Pill Type`) + 1) - LOCATE('"', `Pill Type`) - 1
    ),
    `Pill Type`
  ) AS `Pill Type`
FROM 你的表名;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 03:18:01