代码之家  ›  专栏  ›  技术社区  ›  chikak

检查约束以确保字符列中的值都是数字

  •  0
  • chikak  · 技术社区  · 16 年前

    这和 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]'
    
    1 回复  |  直到 16 年前
        1
  •  2
  •   gbn    16 年前

    它伤害大脑,而不是像(不是范围)工作。

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

    双重否定,处理任何长度