خوش آموز درخت تو گر بار دانش بگیرد، به زیر آوری چرخ نیلوفری را
بررسی وجود یک فیلد خاص در یک جدول یا جداول یک دیتابیس در SQL Server
به عنوان فردی که برنامه نویس SQL Server است، باید بررسی کنید که آیا فیلد خاصی در یک Table و یا در table های دیگر آن دیتابیس وجود دارد یا خیر. خب، چگونه به این مهم برسیم؟ چگونه متوجه شویم که فیلد خاصی در یک Table و یا سایر جداول در دیتابیس SQL Server وجود دارد یا خیر؟ اگر این عمل متوجه یک جدول خاص باشد، دردسر خاصی ندارد ولی اگر در میان انبوهی از جداول که در یک دیتابیس وجود دارد، چگونه فیلد مورد نظرمان را بیابیم؟ در اینجا، چندین روش برای بررسی ستون در یک جدول یا چند جدول در بانک اطلاعات را ذکر کرده ایم. پس لطفا با ما همراه باشید.
با توجه به Syntax فوق، مثال زیر را ملاحظه کنید:
با توجه به Syntax فوق، مثال زیر را ملاحظه کنید:
Syntax استفاده از COL_LENGTH بصورت زیر می باشد:
با توجه به Syntax فوق، مثال زیر را ملاحظه کنید:
Syntax استفاده از COLUMNPROPERTY بصورت زیر می باشد:
با توجه به Syntax فوق، مثال زیر را ملاحظه کنید:
خب، تا الان متدهایی که استفاده کردیم، فقط برای یافتن یک فیلد خاص در جدولی معرفی شده بود. ولی از اینجا به بعد به متدهایی که فیلد مورد نظر را در تمامی جداول دیتابیس جستجو کند، می پردازیم.
مثال:
مثال:
شما حتی می توانید در Stored Procedure ها هم دنبال فیلد خاصی باشید. یعنی لیستی از Stored Procedure ها دارای فیلد خاصی هستند را مشاهده کنید.
مثال:
مثال:
Using INFORMATION_SCHEMA.COLUMNS
ساده ترین راه برای فهیمیدن اینکه ستون خاصی در یک جدول وجود دارد، استفاده از INFORMATION_SCHEMA.COLUMNS می باشد. Template استفاده از INFORMATION_SCHEMA.COLUMNS را در ذیل مشاهده می کنید:USE {{Database Name}}
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '{{Table Name}}'
AND COLUMN_NAME = '{{Column Name}}'
با توجه به Syntax فوق، مثال زیر را ملاحظه کنید:
USE WideWorldImporters
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'CustomerTransactions'
AND COLUMN_NAME = 'CustomerID'
Using SYS.COLUMNS
راه حل دیگری برای بررسی وجود فیلد خاصی در یک جدول استفاده از SYS.COLUMNS می باشد. Syntax استفاده از SYS.COLUMNS بصورت زیر می باشد:USE {{Database Name}}
SELECT *
FROM SYS.COLUMNS
WHERE OBJECT_ID = OBJECT_ID('{{Table Name}}')
AND NAME = '{{Column Name}}'
Example
با توجه به Syntax فوق، مثال زیر را ملاحظه کنید:
USE WideWorldImporters
SELECT *
FROM SYS.COLUMNS
WHERE OBJECT_ID = OBJECT_ID('Sales.CustomerTransactions')
AND NAME = 'CustomerID'
Using COL_LENGTH
روش دیگر برای یافتن وجود فیل دریک جدول، استفاده از Function سیستمی COL_LENGTH می باشد. در این Function اگر فیلد مورد نظر شما در جدول وجود داشت، طول آن ستون یا فیلد را در خروجی نشان می دهد و در غیر اینصورت مقدار NULL را برمیگرداند.Syntax استفاده از COL_LENGTH بصورت زیر می باشد:
USE {{Database Name}}
SELECT COL_LENGTH('{{Table Name}}', '{{Column Name}}')
با توجه به Syntax فوق، مثال زیر را ملاحظه کنید:
USE WideWorldImporters
SELECT COL_LENGTH('Sales.CustomerTransactions', 'CustomerID')
Using COLUMNPROPERTY
مورد دیگر، استفاده از COLUMNPROPRTY می باشد که اگر ستون مورد نظر در جدول مورد نظرتان وجود داشته باشد، ID آن فیلد را در تنظیمات جدول برمی گرداند.Syntax استفاده از COLUMNPROPERTY بصورت زیر می باشد:
USE {{Database Name}}
SELECT COLUMNPROPERTY(OBJECT_ID('{{Table Name}}'), '{{Column Name}}', 'ColumnId')
با توجه به Syntax فوق، مثال زیر را ملاحظه کنید:
USE WideWorldImporters
SELECT COLUMNPROPERTY(OBJECT_ID('Sales.CustomerTransactions'), 'CustomerID', 'ColumnId')
خب، تا الان متدهایی که استفاده کردیم، فقط برای یافتن یک فیلد خاص در جدولی معرفی شده بود. ولی از اینجا به بعد به متدهایی که فیلد مورد نظر را در تمامی جداول دیتابیس جستجو کند، می پردازیم.
Using INFORMATION_SCHEMA.COLUMNS
Syntax:
USE {{Database Name}}
SELECT
TABLE_SCHEMA, TABLE_NAME
FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME = '{{Column Name}}'
مثال:
USE WideWorldImporters
SELECT
TABLE_SCHEMA, TABLE_NAME
FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME = 'CustomerID'
Using SYS.COLUMNS
Syntax:
USE {{Database Name}}
SELECT OBJECT_NAME(object_id) AS 'Table Name', name as 'Column Name'
FROM SYS.COLUMNS
WHERE NAME = '{{Column Name}}'
مثال:
USE WideWorldImporters
SELECT OBJECT_NAME(object_id) AS 'Table Name', name as 'Column Name'
FROM SYS.COLUMNS
WHERE NAME = 'CustomerID'
شما حتی می توانید در Stored Procedure ها هم دنبال فیلد خاصی باشید. یعنی لیستی از Stored Procedure ها دارای فیلد خاصی هستند را مشاهده کنید.
Using INFORMATION_SCHEMA.ROUTINES
Syntax:
SELECT
ROUTINE_NAME,
ROUTINE_SCHEMA
FROM
INFORMATION_SCHEMA.ROUTINES WHERE
ROUTINE_TYPE='PROCEDURE' AND
ROUTINE_DEFINITION LIKE '%{{Column Name}}%'
مثال:
SELECT
ROUTINE_NAME,
ROUTINE_SCHEMA
FROM
INFORMATION_SCHEMA.ROUTINES WHERE
ROUTINE_TYPE='PROCEDURE' AND
ROUTINE_DEFINITION LIKE '%Employee%'
Using SYS.PROCEDURES
Syntax:
SELECT
name,
OBJECT_DEFINITION(object_id)
FROM
SYS.PROCEDURES
WHERE
OBJECT_DEFINITION(object_id) LIKE '%{{Column Name}}%'
مثال:
SELECT
name,
OBJECT_DEFINITION(object_id)
FROM
SYS.PROCEDURES
WHERE
OBJECT_DEFINITION(object_id) LIKE '%Employee%'
نمایش دیدگاه ها (0 دیدگاه)
دیدگاه خود را ثبت کنید: