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

SQL新手求助:不使用NOT LIKE函数筛选不以字母'g'结尾的数据

筛选不以字母'g'结尾的数据(不用NOT LIKE)

以下是几种适用于常见SQL数据库的实现方式:

方法1:使用RIGHT函数

通过RIGHT()提取字段最后一个字符,判断其不等于'g'。注意:如果字段值为NULL,RIGHT()会返回NULL,此时不等于比较会自动排除这类行;若需要保留NULL值,需额外添加判断条件。

示例代码:

-- 排除NULL和以g结尾的行
SELECT *
FROM your_table
WHERE RIGHT(your_column, 1) != 'g';

-- 保留NULL,仅排除以g结尾的行
SELECT *
FROM your_table
WHERE RIGHT(your_column, 1) != 'g' OR your_column IS NULL;

方法2:使用SUBSTRING + LENGTH函数

如果你的数据库不支持RIGHT(),可以用SUBSTRING()结合LENGTH()获取最后一个字符,逻辑和上述方法一致。

示例代码:

SELECT *
FROM your_table
WHERE SUBSTRING(your_column, LENGTH(your_column), 1) != 'g';

-- 保留NULL的版本
SELECT *
FROM your_table
WHERE SUBSTRING(your_column, LENGTH(your_column), 1) != 'g' OR your_column IS NULL;

方法3:使用正则表达式或匹配函数

不同数据库的语法略有差异,以下是主流数据库的写法:

  • MySQL/MariaDB:使用NOT REGEXP
    SELECT *
    FROM your_table
    WHERE your_column NOT REGEXP 'g$';
    
  • PostgreSQL:使用!~操作符
    SELECT *
    FROM your_table
    WHERE your_column !~ 'g$';
    
  • SQL Server:使用PATINDEX
    SELECT *
    FROM your_table
    WHERE PATINDEX('%g', your_column) = 0;
    
    注:PATINDEX('%g', your_column)会返回最后一个字符为g的位置,无匹配则返回0。

额外说明

  • 空字符串('')会被上述方法包含,符合“不以g结尾”的需求。
  • 不同数据库对字符串函数的支持有差异,比如SQL Server中LENGTH()对应LEN(),使用时需适配你的数据库方言。

内容的提问来源于stack exchange,提问作者NGỌC NGUYỄN KIM

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 06:03:21