2013-03-27 88 views
8

我想选择一个特定的表,其中表名是像“98673”MySQL的Like语句

列名所以我用这个:

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

然而,这将不会产生任何数据。 虽然我在那里有'98673Blah'的列名。

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

回答

8

对于像你必须添加一个通配符%,所以:

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

大,我俯瞰,确实! – BonifatiusK 2013-03-27 11:16:18

4

使用%

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

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

1

任何column_name您需要添加%

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

这意味着column_name包含98673

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 

欲了解更多信息,看看在以下文档中:

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”的文字。

1

我们可以这样来做太:

show columns from lime_survey_98673 like '%98673%'; 
+0

这不提供问题的答案。一旦你有足够的[声誉](https://stackoverflow.com/help/whats-reputation),你将可以[对任何帖子发表评论](https://stackoverflow.com/help/privileges/comment);相反,[提供不需要提问者澄清的答案](https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-c​​an- I-DO-代替)。 - [来自评论](/ review/low-quality-posts/17965187) – 2017-11-16 11:08:55

0

使用此查询

SHOW COLUMNS FROM `table_name` LIKE 'coloums_name';