2017-01-18 19 views
1

我正在使用SQL Server作爲應用程序。我在我的數據庫中有一個名爲FieldOptions的列。該列的行爲與MySQL中的enum列相同。以下是我將執行的查詢在表TableName上重新創建此列的查詢。哪裏可以找到SQL Server上的information_schema中的檢查約束信息?

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

刪除了MySQL作爲標籤不相關你直接的問題。 –

回答

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' 
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>') 
+0

你可以使用'{}'來格式化代碼 – TheGameiswar

相關問題