2009-07-31 8 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

投票を忘れました。それは今でした。そして、チップのおかげで – chikak

答えて

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]%' 

ダブルネガティブ、任意の長さ

+0

なぜ最後のケースで失敗を書いたのですか?それはここでうまくいきます:-) – chikak

+0

私はちょうどその8桁を確実にする必要があることを私は気づいた... – chikak

+0

実際に質問は、常に8文字になる長さについて何も言わないので、私はそれを受け入れられた答え.. – chikak

関連する問題