仅选择TEXT COLUMN

时间:2014-07-08 03:30:58

标签: mysql

我想选择类型为“text”的列的值。类似的东西:

SELECT (SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'mytable' AND COLUMN_TYPE='text') FROM `mytable`

有可能吗?我经常搜索但没有发现任何东西,对此我有点悲观。

[当然上面的陈述中的问题是第二个SELECT返回多行]

#1242 - Subquery returns more than 1 row

2 个答案:

答案 0 :(得分:1)

除了常规查询之外,你需要在这里使用很多语句,而不是提到你需要从Information.Schema获取列。您可以使用GROUP_CONCAT()函数和PREPARE and EXECUTE语句。

它可能看起来像这样:

SET @col = NULL;
SET @query = NULL;

SELECT (
   SELECT GROUP_CONCAT(COLUMN_NAME) as ColumnNames
   FROM INFORMATION_SCHEMA.COLUMNS
   WHERE table_name = 'table_name' 
   AND data_type='text' )
INTO @col;

SET @query = CONCAT('SELECT ', @col, ' FROM table_name');

PREPARE stmt FROM @query;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

查看我的 Sql Fiddle Demo

答案 1 :(得分:0)

试试这个,

SELECT COLUMN_NAME, COLUMN_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'application_config' AND COLUMN_TYPE='varchar(150)';

注意:您必须提及确切类型(EX:int(10),时间戳),否则请使用('%varchar%')。