Hướng dẫn check column exists in table mysql - kiểm tra cột tồn tại trong bảng mysql

Tôi đã ném thủ tục được lưu trữ này cùng với một khởi đầu từ các bình luận của @lain ở trên, loại tốt nếu bạn cần gọi nó nhiều hơn một vài lần [và không cần PHP]:

delimiter //
-- ------------------------------------------------------------
-- Use the inforamtion_schema to tell if a field exists.
-- Optional param dbName, defaults to current database
-- ------------------------------------------------------------
CREATE PROCEDURE fieldExists [
OUT _exists BOOLEAN,      -- return value
IN tableName CHAR[255],   -- name of table to look for
IN columnName CHAR[255],  -- name of column to look for
IN dbName CHAR[255]       -- optional specific db
] BEGIN
-- try to lookup db if none provided
SET @_dbName := IF[dbName IS NULL, database[], dbName];

IF CHAR_LENGTH[@_dbName] = 0
THEN -- no specific or current db to check against
  SELECT FALSE INTO _exists;
ELSE -- we have a db to work with
  SELECT IF[count[*] > 0, TRUE, FALSE] INTO _exists
  FROM information_schema.COLUMNS c
  WHERE 
  c.TABLE_SCHEMA    = @_dbName
  AND c.TABLE_NAME  = tableName
  AND c.COLUMN_NAME = columnName;
END IF;
END //
delimiter ;

Làm việc với fieldExists

mysql> call fieldExists[@_exists, 'jos_vm_product', 'child_option', NULL] //
Query OK, 0 rows affected [0.01 sec]

mysql> select @_exists //
+----------+
| @_exists |
+----------+
|        0 |
+----------+
1 row in set [0.00 sec]

mysql> call fieldExists[@_exists, 'jos_vm_product', 'child_options', 'etrophies'] //
Query OK, 0 rows affected [0.01 sec]

mysql> select @_exists //
+----------+
| @_exists |
+----------+
|        1 |
+----------+

Tôi đang cố gắng tạo một cột cho bảng của tôi chỉ khi nó không tồn tại. Tôi đã nghiên cứu rất nhiều nhưng tôi chưa thể tìm thấy bất kỳ giải pháp nào.

Điều này có thực sự có thể để tạo ra cột không?

Hỏi ngày 7 tháng 4 năm 2017 lúc 14:44Apr 7, 2017 at 14:44

2

MySQL ALTER TABLE không có đặc tả IF EXISTS.

Bạn có thể làm như sau thông qua việc sử dụng Proc được lưu trữ hoặc ngôn ngữ lập trình nếu đây là điều mà bạn sẽ cần làm một cách thường xuyên:

Pseudocode:

  • Tìm nếu cột tồn tại bằng SQL bên dưới:

    Chọn

    mysql> call fieldExists[@_exists, 'jos_vm_product', 'child_option', NULL] //
    Query OK, 0 rows affected [0.01 sec]
    
    mysql> select @_exists //
    +----------+
    | @_exists |
    +----------+
    |        0 |
    +----------+
    1 row in set [0.00 sec]
    
    mysql> call fieldExists[@_exists, 'jos_vm_product', 'child_options', 'etrophies'] //
    Query OK, 0 rows affected [0.01 sec]
    
    mysql> select @_exists //
    +----------+
    | @_exists |
    +----------+
    |        1 |
    +----------+
    
    0 từ ____ 11 .________ 12 trong đó ________ 13 = [Tên cơ sở dữ liệu] và ________ 14 = [Tên bảng];

  • Nếu truy vấn trên trả về kết quả thì nó có nghĩa là cột tồn tại, nếu không bạn có thể tiếp tục và tạo cột.

Đã trả lời ngày 7 tháng 4 năm 2017 lúc 16:08Apr 7, 2017 at 16:08

Thataruthatsaruthatsaru

6284 Huy hiệu bạc9 Huy hiệu Đồng4 silver badges9 bronze badges

2

Thực tế tồn tại bây giờ cho Maria DB 10.219

ALTER TABLE test ADD COLUMN IF NOT EXISTS column_a VARCHAR[255];

Tiền thưởng, nó cũng hoạt động để sửa đổi

ALTER TABLE test MODIFY IF EXISTS column_a VARCHAR[255];

Đã trả lời ngày 25 tháng 3 năm 2019 lúc 13:52Mar 25, 2019 at 13:52

ParoofkeyparoofkeyParoofkey

4711 Huy hiệu vàng4 Huy hiệu bạc 4 huy hiệu đồng1 gold badge4 silver badges4 bronze badges

1

Bạn có thể sử dụng giải pháp này, đã được đề cập trên một bài đăng Stackoverflow khác: [Tham khảo: //stackoverflow.com/a/31989541/]

MySQL - Bảng thay đổi để thêm một cột nếu nó không tồn tại:

SET @dbname = DATABASE[];
SET @tablename = "tableName";
SET @columnname = "colName";
SET @preparedStatement = [SELECT IF[
  [
    SELECT COUNT[*] FROM INFORMATION_SCHEMA.COLUMNS
    WHERE
      [table_name = @tablename]
      AND [table_schema = @dbname]
      AND [column_name = @columnname]
  ] > 0,
  "SELECT 1",
  CONCAT["ALTER TABLE ", @tablename, " ADD ", @columnname, " INT[11];"]
]];
PREPARE alterIfNotExists FROM @preparedStatement;
EXECUTE alterIfNotExists;
DEALLOCATE PREPARE alterIfNotExists;

Đã trả lời ngày 8 tháng 3 năm 2018 lúc 9:06Mar 8, 2018 at 9:06

ANTO JOSEANTO JOSEAnto Jose

Huy hiệu Bạc 1311 Huy hiệu Đồng1 silver badge4 bronze badges

Điều này dưới đây đã làm việc cho tôi:

    SELECT count[*]
    INTO @exist
    FROM information_schema.columns
    WHERE table_schema = 'mydatabase'
    and COLUMN_NAME = 'mycolumn'
    AND table_name = 'mytable' LIMIT 1;

    set @query = IF[@exist query["ALTER TABLE myTable ADD `example_Col` int NOT NULL"];
}catch[Exception $e]
{
  echo "\nWarning example_Col already exists\n";
}

Đây là giả sử $ dB là một OBJCT cho phép bạn gửi một truy vấn tất nhiên.

Đã trả lời ngày 21 tháng 5 năm 2021 lúc 15:38May 21, 2021 at 15:38

Làm thế nào để bạn kiểm tra xem một cột tồn tại trong bảng MySQL?

Tìm nếu cột tồn tại bằng SQL bên dưới: Chọn Cột_Name từ Information_Schema .Columns trong đó Table_Schema = [Tên cơ sở dữ liệu] và Table_Name = [Tên bảng]; Nếu truy vấn trên trả về kết quả thì nó có nghĩa là cột tồn tại, nếu không bạn có thể tiếp tục và tạo cột.SELECT column_name FROM INFORMATION_SCHEMA . COLUMNS WHERE TABLE_SCHEMA =[Database Name] AND TABLE_NAME =[Table Name]; If the above query returns a result then it means the column exists, otherwise you can go ahead and create the column.

Làm cách nào để kiểm tra nếu một cột tồn tại?

Kiểm tra sự tồn tại của cột: Để kiểm tra sự tồn tại, chúng ta cần sử dụng hàm col_length [].Hàm col_length [] Trả về độ dài xác định của một cột trong byte.Hàm này có thể được sử dụng với điều kiện nếu khác để kiểm tra xem cột có tồn tại hay không.use the COL_LENGTH[] function. COL_LENGTH[] function returns the defined length of a column in bytes. This function can be used with the IF ELSE condition to check if the column exists or not.

Làm cách nào để tìm một cột cụ thể trong cơ sở dữ liệu MySQL?

Làm thế nào để liệt kê tất cả các bảng có chứa một tên cột cụ thể trong MySQL?Bạn muốn tìm các bảng bằng cách sử dụng tên của các cột trong đó.Chọn BẮT ĐẦU BẮT ĐẦU_NAME từ thông tin_schema.columns trong đó cột_name trong ['cột1', 'cột2'] và table_schema = 'Schema_name';SELECT DISTINCT TABLE_NAME FROM INFORMATION_SCHEMA. COLUMNS WHERE COLUMN_NAME IN['column1', 'column2'] AND TABLE_SCHEMA = 'schema_name';

Làm thế nào để bạn kiểm tra xem một cột tồn tại trong nhiều bảng?

Làm thế nào để bạn kiểm tra xem một cột tồn tại trong nhiều bảng trong SQL ?..
Chọn Table_Name từ Information_Schema.NHỮNG CÁI BÀN..
Chọn Table_Name, Cột_Name từ Information_Schema.CỘT..
Chọn Cột_Name từ Information_Schema.....
Nếu tồn tại [chọn * từ thông tin_schema ..
Nếu tồn tại [chọn * từ thông tin_schema ..

Bài Viết Liên Quan

Chủ Đề