我正在使用SQL Server作为应用程序。我的数据库中有一个名为FieldOptions
的列。此列的行为类似于MySQL中的enum
列。以下是我将在名为TableName
的表上重新创建此列的查询。
ALTER TABLE TableName
ADD FieldsOptions VARCHAR(10) NOT NULL
CHECK (FieldsOptions IN ('Useful', 'Useless', 'Unknown'))
现在,我希望能够查询information_schema
表以获取有效值。除了列信息之外,我还希望看到'Useful', 'Useless', 'Unknown'
我检查了INFORMATION_SCHEMA.COLUMNS
表和INFORMATION_SCHEMA.TABLE_CONSTRAINTS
,但没有找到提供有效选项的信息。
如何获取列的有效值?
答案 0 :(得分:1)
尝试此查询时,应将有效选项放在以逗号分隔的字符串
中SELECT
cl.*
,REPLACE(REPLACE(c.CHECK_CLAUSE, '[' + cl.COLUMN_NAME + ']=', ''), ' OR ', ',') AS Options
FROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE AS cu
INNER JOIN INFORMATION_SCHEMA.CHECK_CONSTRAINTS AS c on c.CONSTRAINT_NAME = cu.CONSTRAINT_NAME
AND c.CONSTRAINT_CATALOG = cu.TABLE_CATALOG
INNER JOIN INFORMATION_SCHEMA.COLUMNS AS cl ON cl.COLUMN_NAME = cu.COLUMN_NAME
AND cl.TABLE_CATALOG = cu.TABLE_CATALOG
AND cl.TABLE_NAME = cu.TABLE_NAME
WHERE cl.COLUMN_NAME = 'FieldsOptions'
答案 1 :(得分:0)
select definition
from sys.check_constraints
where name = (select cu.CONSTRAINT_NAME
from INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE cu
inner join INFORMATION_SCHEMA.CHECK_CONSTRAINTS c on c.CONSTRAINT_NAME=cu.CONSTRAINT_NAME
where COLUMN_NAME = 'FieldsOptions<Your Column Name>')