2013-03-27 153 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';