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

如何用replace去除数据空格?MySQL查询仅返回表头无数据

问题原因及解决方案

你的查询无数据返回,核心问题是WHERE子句中IN的用法错误:你把多个目标IPC值用|拼接成了单个字符串,IN会将其作为一个整体去匹配replace(IPC_CLASS_SYMBOL,' ','')的结果,而你的表里没有任何一条记录处理后等于这个长字符串,因此无数据返回。

修正方案

方案1:正确使用IN(推荐)

将IN后的单个字符串拆分为独立的IPC值列表,这是IN的标准用法:

SELECT IPC_CLASS_SYMBOL AS IPC, COUNT(DISTINCT appln_id) AS PATENT_COUNT
FROM OOO
WHERE REPLACE(IPC_CLASS_SYMBOL, ' ', '') IN (
    'G08G', 'G01W', 'G01S17/86', 
    'G01S15/86', 'G01S17/894', 
    'G01S17/88', 'G01S17/00'
)
GROUP BY IPC
ORDER BY IPC;

注:原语句中的DISTINCT可以去掉,因为GROUP BY IPC已经会对IPC值去重。

方案2:使用正则表达式匹配

利用MySQL的REGEXP语法,通过|分隔多个匹配项,同时用^和$确保精确匹配(避免部分匹配):

SELECT IPC_CLASS_SYMBOL AS IPC, COUNT(DISTINCT appln_id) AS PATENT_COUNT
FROM OOO
WHERE REPLACE(IPC_CLASS_SYMBOL, ' ', '') REGEXP '^G08G$|^G01W$|^G01S17/86$|^G01S15/86$|^G01S17/894$|^G01S17/88$|^G01S17/00$'
GROUP BY IPC
ORDER BY IPC;

方案3:用OR连接多个条件

如果IPC值数量不多,也可以直接用OR逐个匹配:

SELECT IPC_CLASS_SYMBOL AS IPC, COUNT(DISTINCT appln_id) AS PATENT_COUNT
FROM OOO
WHERE REPLACE(IPC_CLASS_SYMBOL, ' ', '') = 'G08G'
   OR REPLACE(IPC_CLASS_SYMBOL, ' ', '') = 'G01W'
   OR REPLACE(IPC_CLASS_SYMBOL, ' ', '') = 'G01S17/86'
   OR REPLACE(IPC_CLASS_SYMBOL, ' ', '') = 'G01S15/86'
   OR REPLACE(IPC_CLASS_SYMBOL, ' ', '') = 'G01S17/894'
   OR REPLACE(IPC_CLASS_SYMBOL, ' ', '') = 'G01S17/88'
   OR REPLACE(IPC_CLASS_SYMBOL, ' ', '') = 'G01S17/00'
GROUP BY IPC
ORDER BY IPC;

额外验证建议

如果修正后仍无数据,可以先执行以下语句确认表里是否存在符合条件的记录:

SELECT DISTINCT REPLACE(IPC_CLASS_SYMBOL, ' ', '') FROM OOO;

查看返回的IPC值是否包含你要匹配的目标值,排除数据本身不存在的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 03:40:12