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

如何修改SQL语句以输出仅含一个逗号和一个分号的行?

筛选仅含一个逗号和一个分号的行解决方案

一、修改原有LIKE语句(基础实现)

如果坚持用LIKE,需要额外排除包含多个逗号或分号的情况,调整后的SQL如下:

SELECT *
FROM table
WHERE history_coord IS NULL
   OR (history_coord LIKE '%,%' 
       AND history_coord NOT LIKE '%,%,%'
       AND history_coord LIKE '%;%'
       AND history_coord NOT LIKE '%;%;%')

原理是用NOT LIKE过滤掉有两个及以上逗号/分号的行,不过这种写法对特殊位置的字符(比如逗号在开头/结尾)兼容性一般,仅适合简单场景。

二、用字符串函数替代LIKE(更精准可靠)

更推荐用字符串统计的方法,通过计算字符出现次数来筛选,大多数SQL数据库都支持这类函数:

SELECT *
FROM table
WHERE history_coord IS NULL
   OR (LENGTH(history_coord) - LENGTH(REPLACE(history_coord, ',', '')) = 1
       AND LENGTH(history_coord) - LENGTH(REPLACE(history_coord, ';', '')) = 1)

逻辑说明:

  • REPLACE(history_coord, ',', '')会移除字符串里所有逗号,原字符串长度减去替换后的长度,差值就是逗号的出现次数,等于1就表示只有一个逗号。
  • 分号的统计逻辑和逗号完全相同。
  • 如果你不需要保留history_coord为NULL的行,直接删掉OR history_coord IS NULL这部分即可。

注意:不同数据库的长度函数可能有差异,比如SQL Server用LEN代替LENGTH,Oracle和MySQL用LENGTH,按需调整即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 06:52:08