2015-04-22 109 views
-2

有什麼方法可以在SQL Server中合併數據類型?即在文本總是相同的情況下,將單元格的值設爲文本和數字兩者?在SQL Server中合併數據類型

我有一個表ContractContractID字段的值應爲:'TCwxyz',其中'TC'是字符串字符,'wxyz'是整數。

我有以下的,但它似乎並不奏效:

CREATE TYPE TenantContracts AS CHAR(6) 
CHECK (SUBSTRING(VALUE,1,2)='TC' 
AND (SUBSTRING(VALUE,2,4) AS SMALLINT) 

任何援助將不勝感激。

回答

0

約束被添加到表定義中,您不需要創建一個類型。

ALTER TABLE Contract 
ADD CONSTRAINT chk_ContractID CHECK (
    SUBSTRING(ContractID, 1, 2) = 'TC' 
    AND ISNUMERIC(SUBSTRING(ContractID, 3, 4)) = 1 
) 

該解決方案將接受一些不正確的值,例如TC1.01。我只是爲了簡單起見而使用它,而不是試圖確定最後4位數是否是一個整數,這會變得非常棘手(T-sql - determine if value is integer)。

編輯:如果你確實想使一個更強大的整數檢查,也許最好是簡單地逐個檢查如果每個最後4個字符的數字是:

ALTER TABLE Contract 
ADD CONSTRAINT chk_ContractID CHECK (
    SUBSTRING(ContractID, 1, 2) = 'TC' 
    AND ISNUMERIC(SUBSTRING(ContractID, 3, 1)) = 1 
    AND ISNUMERIC(SUBSTRING(ContractID, 4, 1)) = 1 
    AND ISNUMERIC(SUBSTRING(ContractID, 5, 1)) = 1 
    AND ISNUMERIC(SUBSTRING(ContractID, 6, 1)) = 1 
)