ฉันต้องการรับประเภทข้อมูลคอลัมน์ของตาราง mysql
คิดว่าฉันสามารถใช้MYSQLFIELD
โครงสร้างได้ แต่เป็นประเภทฟิลด์ที่แจกแจง
จากนั้นฉันก็ลองด้วย mysql_real_query()
ข้อผิดพลาดที่ฉันได้รับคือ query was empty
ฉันจะรับประเภทข้อมูลคอลัมน์ได้อย่างไร
ฉันต้องการรับประเภทข้อมูลคอลัมน์ของตาราง mysql
คิดว่าฉันสามารถใช้MYSQLFIELD
โครงสร้างได้ แต่เป็นประเภทฟิลด์ที่แจกแจง
จากนั้นฉันก็ลองด้วย mysql_real_query()
ข้อผิดพลาดที่ฉันได้รับคือ query was empty
ฉันจะรับประเภทข้อมูลคอลัมน์ได้อย่างไร
คำตอบ:
คุณสามารถใช้ตารางคอลัมน์ information_schema :
SELECT DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'tbl_name' AND COLUMN_NAME = 'col_name';
SELECT COLUMN_TYPE
เพื่อรับข้อมูลเพิ่มเติมได้
AND COLUMN_NAME = 'col_name'
) SELECT COLUMN_NAME, DATA_TYPE FROM etc.
เว้นแต่คุณจะแสดงชื่อคอลัมน์:
คำตอบส่วนใหญ่ซ้ำกันอาจเป็นประโยชน์ในการจัดกลุ่ม โดยทั่วไปมีการเสนอตัวเลือกง่ายๆสองตัวเลือก
ตัวเลือกแรกมี 4 นามแฝงที่แตกต่างกันซึ่งบางชื่อค่อนข้างสั้น:
EXPLAIN db_name.table_name;
DESCRIBE db_name.table_name;
SHOW FIELDS FROM db_name.table_name;
SHOW COLUMNS FROM db_name.table_name;
(หมายเหตุ: เป็นทางเลือกที่db_name.table_name
หนึ่งสามารถใช้เป็นครั้งที่สองFROM
: db_name FROM table_name
)
สิ่งนี้ให้สิ่งที่ต้องการ:
+------------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------+--------------+------+-----+---------+-------+
| product_id | int(11) | NO | PRI | NULL | |
| name | varchar(255) | NO | MUL | NULL | |
| description | text | NO | | NULL | |
| meta_title | varchar(255) | NO | | NULL | |
+------------------+--------------+------+-----+---------+-------+
ตัวเลือกที่สองยาวกว่าเล็กน้อย:
SELECT
COLUMN_NAME, DATA_TYPE
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_SCHEMA = 'db_name'
AND
TABLE_NAME = 'table_name';
นอกจากนี้ยังเป็นคนพูดน้อย:
+------------------+-----------+
| column_name | DATA_TYPE |
+------------------+-----------+
| product_id | int |
| name | varchar |
| description | text |
| meta_title | varchar |
+------------------+-----------+
มีข้อดีคืออนุญาตให้เลือกต่อคอลัมน์แม้ว่าจะใช้AND COLUMN_NAME = 'column_name'
(หรือlike
)
ในการรับประเภทข้อมูลของคอลัมน์ทั้งหมด:
describe table_name
หรือเพียงคอลัมน์เดียว:
describe table_name column_name
SELECT DATA_TYPE
ตามคำตอบอื่น ๆไม่ดีกว่าเหรอ
อ้างอิงลิงค์นี้
mysql> SHOW COLUMNS FROM mytable FROM mydb;
mysql> SHOW COLUMNS FROM mydb.mytable;
หวังว่านี่อาจช่วยคุณได้
ขั้นแรกให้เลือกฐานข้อมูลโดยใช้use testDB;
จากนั้นดำเนินการ
desc `testDB`.`images`;
-- or
SHOW FIELDS FROM images;
เอาท์พุต:
ค้นหาเพื่อค้นหาประเภทข้อมูลทั้งหมดของคอลัมน์ที่ใช้ในฐานข้อมูลใด ๆ
SELECT distinct DATA_TYPE FROM INFORMATION_SCHEMA.columns
WHERE table_schema = '<db_name>' AND column_name like '%';
AND column_name like '%'
ฟุ่มเฟือย?
แสดงคอลัมน์จาก mytable
ตัวอย่างที่สมบูรณ์ในตัวเองมักมีประโยชน์
<?php
// The server where your database is hosted localhost
// The name of your database mydatabase
// The user name of the database user databaseuser
// The password of the database user thesecretpassword
// Most web pages are in utf-8 so should be the database array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")
try
{
$pdo = new PDO("mysql:host=localhost;dbname=mydatabase", "databaseuser", "thesecretpassword", array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
}
catch(PDOException $e)
{
die('Could not connect: ' . $e->getMessage());
}
$sql = "SHOW COLUMNS FROM mytable";
$query = $pdo->prepare($sql);
$query->execute();
$err = $query->errorInfo();
$bug = $err[2];
if ($bug != "") { echo "<p>$bug</p>"; }
while ($row = $query->fetch(PDO::FETCH_ASSOC))
{
echo "<pre>" . print_r($row, true) . "</pre>";
}
/* OUTPUT SAMPLE
Array
(
[Field] => page_id
[Type] => char(40)
[Null] => NO
[Key] =>
[Default] =>
[Extra] =>
)
Array
(
[Field] => last_name
[Type] => char(50)
More ...
*/
?>
php
แท็ก
ResultSet rs = Sstatement.executeQuery("SELECT * FROM Table Name");
ResultSetMetaData rsMetaData = rs.getMetaData();
int numberOfColumns = rsMetaData.getColumnCount();
System.out.println("resultSet MetaData column Count=" + numberOfColumns);
for (int i = 1; i <= numberOfColumns; i++) {
System.out.println("column number " + i);
System.out.println(rsMetaData.getColumnTypeName(i));
}
java
แท็ก
เลือก * จาก INFORMATION_SCHEMA COLUMNS WHERE TABLE_SCHEMA = 'SCHEMA_NAME' และ COLUMN_KEY = 'PRI'; ที่ไหน COLUMN_KEY = 'PRI';