2009-07-31 17 views
0

這與CHECK CONSTRAINT of string to contain only digits. (Oracle SQL)類似,但我想對Sybase執行此操作。檢查約束以確保字符列中的值都是數字

我有一個字符列'colExp'(8個字符)。我想把一個檢查約束,以確保此列的值都是數字。

我該怎麼做?這將工作,但它不優雅

colExp LIKE '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]' 
+0

@Pradeep雙負和交易,只需添加_AND LEN(colExp)= 8_1得到你想要的長度。另外,爲什麼沒有投票?你選擇它作爲正確答案? – 2009-07-31 13:53:48

+1

我忘了投票;現在做了。並感謝您的提示 – chikak 2009-08-01 09:12:15

回答

2

它傷害大腦,不喜歡(不是範圍)的作品。

SELECT 1 WHERE 'foo' NOT LIKE '%[^0-9]%' 

SELECT 1 WHERE '123' NOT LIKE '%[^0-9]%' 

SELECT 1 WHERE 'aa1' NOT LIKE '%[^0-9]%' 

SELECT 1 WHERE '1bb' NOT LIKE '%[^0-9]%' 

SELECT 1 WHERE NULL NOT LIKE '%[^0-9]%' 

SELECT 1 WHERE ' ' NOT LIKE '%[^0-9]%' 

--FAIL. Need extra check. Perhaps NULLIF 
SELECT 1 WHERE '' NOT LIKE '%[^0-9]%' 

任意長度