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

PostgreSQL如何编写指定条件的IBAN账号筛选SQL语句

原有SQL的错误点
  • 字符组成判断逻辑错误:NOT LIKE '%[A-Z0-9]%'的语义是「账号中不存在任何大写字母或数字」,和需求要求的「并非完全由字母、数字组成」(即账号包含字母、数字以外的字符)完全不符。同时多数数据库默认的LIKE语法不支持[]字符集匹配,直接写会出现语法兼容问题。
  • 大写格式判断逻辑错误:UPPER(ibanaccount) = 'AAbbCC'是硬编码固定值做相等判断,和「并非全部为大写字母格式」的需求无关,完全无法实现格式校验。
  • 表名写法风险:Table是SQL标准保留关键字,直接作为表名使用大概率会触发语法错误,需要替换为实际业务表名,或按对应数据库的规则加转义符。
  • 长度判断逻辑length(ibanaccount)<>18是符合需求的,这部分无需修改。
正确实现写法

以下写法兼容绝大多数主流数据库(MySQL 8.0+、PostgreSQL等),如果使用SQL Server、Oracle可以根据备注调整正则语法:

SELECT *
FROM 替换为你的实际业务表名
WHERE
  -- 规则1:匹配存在非字母/数字字符的账号,即不满足「完全由字母数字组成」
  ibanaccount NOT REGEXP '^[A-Za-z0-9]+$'
  -- 规则2:转大写后与原值不相等,说明存在小写字母,即不满足「全部为大写格式」
  AND UPPER(ibanaccount) <> ibanaccount
  -- 规则3:字符串长度不等于18
  AND LENGTH(ibanaccount) <> 18;

数据库适配说明:

  • SQL Server无内置REGEXP语法,规则1可替换为ibanaccount LIKE '%[^A-Za-z0-9]%'实现相同判断效果
  • Oracle需将规则1替换为NOT REGEXP_LIKE(ibanaccount, '^[A-Za-z0-9]+$')
  • 如果业务规则中IBAN的合法字符仅允许大写字母+数字,可将规则1的正则调整为^[A-Z0-9]+$,判断逻辑更贴合IBAN编码规范

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 09:18:17