0

これは、数字のみを含む文字列の CHECK CONSTRAINT に似ています。(Oracle SQL)しかし、Sybaseでこれを行いたいです。

文字列 'colExp' (8 文字) があります。この列の値がすべて数字であることを確認するチェック制約を設定したいと考えています。

これどうやってするの?これは機能しますが、エレガントではありません

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

1 に答える 1

2

それは脳を傷つけます、NOT LIKE (not range) は機能しません。

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

二重否定と任意の長さを扱う

于 2009-07-31T11:55:56.433 に答える