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

如何筛选查询以仅显示无法将列转换为int的结果

  •  2
  • Sergio  · 技术社区  · 13 年前

    我有一个带有varchar列的表,其中的值应该是整数(遗留应用程序,是在我到公司之前构建的)。

    我该怎么做?

    4 回复  |  直到 13 年前
        1
  •  4
  •   D'Arcy Rittich    13 年前

    一个简单的方法是:

    select MyColumn
    from MyTable
    where isnumeric(MyColumn) = 0
    

    这假设你可以在转换时丢失小数。

        2
  •  3
  •   Quassnoi    13 年前

    如果分数或非标准表示(如 1.3 1E8 )就您的目的而言,可以被视为“可转换为int”,然后使用:

    SELECT  *
    FROM    mytable
    WHERE   IsNumeric(myfield) = 0
    
        3
  •  2
  •   gbn    13 年前

    ISNUMERIC不会为空字符串(=0)或小数而剪切它。

    SELECT * FROM MyTable WHERE MyColumn LIKE '%[^0-9]%'
    

        4
  •  1
  •   Kevin Horgan    13 年前

    您可以尝试使用正则表达式。不确定您使用的是哪个DBMS,但是类似这样的东西可能对您的DB有效。它应该在某些列中找到包含字符(大写/小写)的记录。

    从某个表中选择*,其中某个“u”列类似于“%[A-Z | A-Z]”;