Bây giờ chúng ta có một bảng có tên là SampleTable, chứa ba cột là Id, Name và Address. Như hình dưới đây
SELECT * FROM dbo.SampleTable
Hãy xem các phương pháp khác nhau để kiểm tra sự tồn tại của cột
Kiểm tra sự tồn tại của cột bằng INFORMATION_SCHEMA. CỘT
THÔNG TIN_SCHEMA. Chế độ xem COLUMNS cho phép bạn lấy thông tin về tất cả các cột cho tất cả các bảng trong cơ sở dữ liệu
Hãy kiểm tra xem cột Name có tồn tại trong bảng SampleTable hay không
Sau T-SQL sử dụng Information_Schema. Chế độ xem cột để kiểm tra sự tồn tại của cột Tên trong bảng Bảng mẫu
IF EXISTS [ SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'SampleTable' AND column_name = 'Name' ] SELECT 'Column exists in table' AS [Status] ; ELSE SELECT 'Column does not exist in table' AS [Status];
Bạn có thể thấy, cột Tên tồn tại trong bảng
Nếu chúng ta kiểm tra cột RowId trong bảng SampleTable, vì chúng ta đã biết rằng cột RowId không tồn tại trong bảng, hãy kiểm tra bằng Information_Schema. Chế độ xem cột
IF EXISTS [ SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'SampleTable' AND column_name = 'RowId' ] SELECT 'Column exists in table' AS [Status] ; ELSE SELECT 'Column does not exist in table' AS [Status];
Kiểm tra sự tồn tại của cột bằng sys. cột
hệ thống. cột là một dạng xem danh mục khác trong SQL Server trả về một hàng cho từng cột của một đối tượng có các cột, chẳng hạn như dạng xem hoặc bảng
Hãy kiểm tra tên cột bằng sys. chế độ xem cột, cho dù nó có tồn tại trong bảng SampleTable hay không
IF EXISTS[SELECT 1 FROM sys.columns WHERE Name = N'Name' AND Object_ID = Object_ID[N'dbo.SampleTable']] SELECT 'Column exists in table' AS [Status] ; ELSE SELECT 'Column does not exist in table' AS [Status];
Bạn có thể thấy trong kết quả bên dưới, tên cột tồn tại trong bảng
Kiểm tra sự tồn tại của cột bằng hàm COL_LENGTH
Hàm COL_LENGTH là một hàm Siêu dữ liệu của Máy chủ SQL, trả về độ dài đã xác định của một cột, tính bằng byte
Hãy xem cách hàm này trả về độ dài của cột được chỉ định theo byte. Hãy kiểm tra độ dài của cột Tên
SELECT COL_LENGTH['[dbo].[SampleTable]','Name'] As ColLen
Bạn có thể thấy, Nó trả về độ dài của Tên cột là 100, điều này cũng đảm bảo rằng cột này tồn tại trong bảng, đó là lý do tại sao nó có một số độ dài
T-SQL sau sử dụng hàm COL_LENGTH trả về độ dài của một cột như chúng ta đã thấy ở trên, thỏa mãn điều kiện IF và trả về 'Cột tồn tại trong bảng'
Trường hợp trong bảng không tồn tại cột thì hàm COL_LENGTH trả về giá trị null tức là trong bảng không tồn tại cột
Hàng ngày, chúng tôi gặp tình huống này khi phải tìm hiểu xem một cột có tồn tại cho
Bảng hoặc Chế độ xem trong Cơ sở dữ liệu không. Đặc biệt nếu chúng tôi đang gỡ lỗi Báo cáo máy chủ SQL/Một ứng dụng,
chúng tôi lấy một tên cột hoặc một phần của nó và muốn biết rằng cột này được sử dụng từ bảng nào.
Chúng tôi có thể truy vấn INFORMATION_SCHEMA. COLUMNS xem để lấy thông tin này.
USE Test GO--Create Test Table_______6
--Create Test View
CREATE VIEW dbo.vw_TestAS SELECT ID, NAME, Address FROM dbo.Test --Check if any of the object[ Table,View] has column name='Address'
SELECT * FROM INFORMATION_SCHEMA.COLUMNS
IF EXISTS [ SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'SampleTable' AND column_name = 'Name' ] SELECT 'Column exists in table' AS [Status] ; ELSE SELECT 'Column does not exist in table' AS [Status];0
IF EXISTS [ SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'SampleTable' AND column_name = 'Name' ] SELECT 'Column exists in table' AS [Status] ; ELSE SELECT 'Column does not exist in table' AS [Status];1Hoặc Nếu bạn muốn tìm kiếm với một số phần của tên cột
IF EXISTS [ SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'SampleTable' AND column_name = 'Name' ] SELECT 'Column exists in table' AS [Status] ; ELSE SELECT 'Column does not exist in table' AS [Status];2
IF EXISTS [ SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'SampleTable' AND column_name = 'Name' ] SELECT 'Column exists in table' AS [Status] ; ELSE SELECT 'Column does not exist in table' AS [Status];3
IF EXISTS [ SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'SampleTable' AND column_name = 'Name' ] SELECT 'Column exists in table' AS [Status] ; ELSE SELECT 'Column does not exist in table' AS [Status];1
CREATE TABLE dbo.Test [ ID INT IDENTITY[1, 1], Name VARCHAR[100], Address VARCHAR[100] ] GO0
CREATE TABLE dbo.Test [ ID INT IDENTITY[1, 1], Name VARCHAR[100], Address VARCHAR[100] ] GO1
CREATE TABLE dbo.Test [ ID INT IDENTITY[1, 1], Name VARCHAR[100], Address VARCHAR[100] ] GO2