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

SQL技术咨询:编写查询含%的列及Student表对应行的语句

没问题,这两个SQL需求我帮你拆解清楚,分数据库场景给你对应的解决方案:

1. 获取所有列名包含%字符的列

因为%是SQL中LIKE语句的通配符,要匹配列名里的字面%必须先转义它。不同数据库的系统表和转义方式略有区别:

MySQL/MariaDB/SQL Server

用INFORMATION_SCHEMA.COLUMNS系统视图查询所有表的列信息:

SELECT table_name, column_name
FROM INFORMATION_SCHEMA.COLUMNS
WHERE column_name LIKE '%\%%' ESCAPE '\';

SQL Server还支持更简洁的写法,用[]包裹通配符表示字面匹配:

SELECT table_name, column_name
FROM INFORMATION_SCHEMA.COLUMNS
WHERE column_name LIKE '%[%]%';

Oracle

用USER_TAB_COLUMNS(仅当前用户有权限的表)或ALL_TAB_COLUMNS(所有可访问的表):

SELECT table_name, column_name
FROM USER_TAB_COLUMNS
WHERE column_name LIKE '%\%%' ESCAPE '\';

2. 筛选Student_Name列值包含%的行

同样因为%是通配符,要匹配字段值里的字面%需要转义处理。以下是不同场景的写法:

通用兼容写法(适用于绝大多数数据库)

用ESCAPE子句明确指定转义字符,避免数据库默认行为差异:

SELECT *
FROM Student
WHERE Student_Name LIKE '%\%%' ESCAPE '\';

这个语句会匹配Student_Name中任意位置包含%的行,对应你的测试数据,会返回a%xw和p%ghjk这两行。

数据库专属简化写法

  • MySQL/MariaDB:默认支持反斜杠转义,可省略ESCAPE子句:
    SELECT *
    FROM Student
    WHERE Student_Name LIKE '%\%%';
    
  • SQL Server:用[]包裹%表示字面匹配:
    SELECT *
    FROM Student
    WHERE Student_Name LIKE '%[%]%';
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:36:08