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

编写SQL查询筛选包含指定允许字符以外字符的数据行

筛选包含非法字符的数据行SQL实现

需求:从表中筛选出colName列值包含允许字符范围外字符的数据行。

允许的字符范围

  • 数字:0-9
  • 大小写字母:a-z、A-Z
  • 空格
  • 反引号:`
  • 特殊字符:!$%[_-()+(注:根据示例结果推测加号+属于允许字符,原需求可能漏列)

示例数据

colName
_______
abc123"
acb231!
bca412++
.4!21
abc
123

目标结果

abc123"
.4!21

不同数据库的SQL写法

MySQL/MariaDB

使用REGEXP正则匹配:

SELECT colName
FROM your_table
WHERE colName REGEXP '[^0-9a-zA-Z `!$%\\[_\\-()\\+]';

PostgreSQL

使用~操作符:

SELECT colName
FROM your_table
WHERE colName ~ '[^0-9a-zA-Z `!$%\\[_\\-()\\+]';

SQL Server

使用PATINDEX函数:

SELECT colName
FROM your_table
WHERE PATINDEX('%[^0-9a-zA-Z `!$%\\[_\\-()\\+]%', colName) > 0;

说明

  • 正则表达式中的[^...]表示匹配不在括号内的任意字符,只要列值中存在这类字符,就会被筛选出来。
  • 示例中被筛选的两行:abc123"含非法的双引号",.4!21含非法的点.,其余行的字符均在允许范围内。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 15:28:17