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

如何在Oracle SQL中排除含百分号(%)的数据值

Oracle SQL 处理带百分号的字符串列

排除末尾带百分号的行

由于%在LIKE语句中是通配符,匹配实际的%字符需要用转义处理,或者直接通过字符串函数判断:

  • 方法1:LIKE + 转义符
SELECT column_a
FROM your_table
WHERE column_a NOT LIKE '%\%' ESCAPE '\';

这里用ESCAPE '\'指定反斜杠为转义符,\%就代表真实的%符号,'%\%'会匹配所有末尾是%的字符串,NOT LIKE就排除这些行。

  • 方法2:SUBSTR判断最后一位
    更简单的方式是直接取字符串最后一个字符判断:
SELECT column_a
FROM your_table
WHERE SUBSTR(column_a, -1) != '%';

如果要排除**所有包含%**的行(不管位置),用INSTR更高效:

SELECT column_a
FROM your_table
WHERE INSTR(column_a, '%') = 0;

将字符串数字统一格式为小数点后两位

因为源数据是字符串类型,无法直接用ROUND,可先转成数字再格式化回字符串:

-- 先排除带%的行,再格式化为两位小数
SELECT TO_CHAR(TO_NUMBER(column_a), 'FM999999999.00') AS formatted_column_a
FROM your_table
WHERE SUBSTR(column_a, -1) != '%';
  • TO_NUMBER(column_a):把合法的字符串数字转成数值类型
  • TO_CHAR(..., 'FM999999999.00'):格式化回字符串,.00确保保留两位小数(不足补零),FM用来去掉格式化后多余的前导空格。

如果你的需求是去掉百分号而非排除,可以先替换掉%再处理:

SELECT TO_CHAR(TO_NUMBER(REPLACE(column_a, '%', '')), 'FM999999999.00') AS formatted_column_a
FROM your_table;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 03:35:01