14

我正在尝试从特定表中选择列名,其中表名类似于“98673”

所以我正在使用这个:

SELECT 
    column_name
FROM 
    information_schema.columns
WHERE 
    table_name='lime_survey_98673'
    AND column_name LIKE '98673'

但是,这不会产生任何数据。虽然我的列名中确实有“98673Blah”。

我知道我一定做错了什么,但是什么?

4

7 回答 7

16

对于 LIKE,您必须添加通配符 %,因此:

SELECT 
    column_name
FROM 
    information_schema.columns
WHERE 
    table_name='lime_survey_98673'
    AND column_name LIKE '98673%'
于 2013-03-27T11:07:33.570 回答
4

利用%

SELECT column_name
FROM information_schema.columns
WHERE table_name='lime_survey_98673'
AND column_name LIKE '%98673%'

%表示通配符并返回任何column_name包含98673

于 2013-03-27T11:06:56.347 回答
2

除非AND column_name LIKE '98673'你真的需要它或者:

SELECT column_name
FROM information_schema.columns
WHERE table_name LIKE '%lime_survey_98673%'
-- AND column_name LIKE '%98673%'  // only if needed

有关更多信息,请查看以下文档:

于 2013-03-27T11:08:14.027 回答
1

您需要添加%

SELECT 
    column_name
FROM 
    information_schema.columns
WHERE 
    table_name='lime_survey_98673'
    AND column_name LIKE '%98673%'

这意味着column_name包含98673.

于 2013-03-27T11:07:08.743 回答
1

也可以这样做:

show columns from lime_survey_98673 like '%98673%';
于 2017-11-16T09:30:39.437 回答
0

我认为您还需要添加带有表名的通配符。

SELECT 
    column_name,
    table_name
FROM 
    information_schema.columns
WHERE
    schema_name = 'db_name' 
    AND table_name='%98673%'
    AND column_name LIKE '%98673%'

通过这种方式,您可以获得列名列出所有表,并且列名包含来自特定数据库或模式的“98673”等文本。

于 2015-12-03T07:52:58.980 回答
0

使用这个查询

SHOW COLUMNS FROM `table_name` LIKE 'coloums_name';
于 2018-02-03T11:16:00.707 回答