如何正确查询指定数据库DB1中所有名称含%phone%的表字段
错误原因说明
- 第一种写法错误:
information_schema是MySQL全局系统库,存储所有数据库的元数据,仅执行use DB1不会限制该表的查询范围,所以返回了所有库的匹配结果。 - 第二种写法错误:
information_schema是独立的系统级库,不属于任何业务库,DB1.information_schema.columns的库表引用路径语法不合法,因此报1064语法错误。
正确查询语句
SELECT * FROM information_schema.columns WHERE table_schema = 'DB1' AND column_name LIKE '%phone%';
如果需要额外排除视图、仅查询普通表的匹配结果,可以再加一层筛选:
SELECT col.* FROM information_schema.columns col JOIN information_schema.tables tab ON col.table_schema = tab.table_schema AND col.table_name = tab.table_name WHERE col.table_schema = 'DB1' AND col.column_name LIKE '%phone%' AND tab.table_type = 'BASE TABLE';
内容的提问来源于stack exchange,提问作者SoAboutYourCode
相关产品推荐
相关产品推荐

