如何检查列包含数字以外的值

时间:2019-04-18 10:01:11

标签: sql sql-server null sql-like

我想检查该列是否包含数字以外的值。我希望这个查询也能打印出NULL值,但事实并非如此。我知道该列包含NULL值。 如何更改此查询以获取NULL值作为输出呢?预先谢谢你!

SELECT DISTINCT [1001account], [5028account], Balancesheettype
FROM [Cris_Ocean_tmp].[dbo].[NiiStressTest2018_v2_PUBLISHED_201812_CC_0326]
WHERE (StresstestaccountEnabled LIKE '%Yes%' AND BalancesheetAmount <> 0) AND (
    [1001account] NOT LIKE '%[0-9]%' OR
    [5028account] NOT LIKE '%[0-9]%'
)

4 个答案:

答案 0 :(得分:2)

x NOT LIKE '%[0-9]%'ABC123(包含数字以外的值)不匹配。在SQL Server中,您可以将LIKE[^...]一起使用;并且您需要单独检查NULL:

WHERE column1 LIKE '%[^0-9]%' OR column1 IS NULL

答案 1 :(得分:0)

使用mysql ifnull语句: https://mariadb.com/kb/en/library/ifnull/

   SELECT DISTINCT
    [1001account], [5028account], Balancesheettype
    FROM 
    XXX
    WHERE
    (StresstestaccountEnabled LIKE '%Yes%' AND BalancesheetAmount <> 0)
    AND
    (
    IFNULL([1001account],0) NOT  LIKE '%[0-9]%'
    OR
    IFNULL([5028account],0) NOT LIKE '%[0-9]%'
    )

答案 2 :(得分:0)

如果您使用的是SQL Server 2012+,则可以使用TRY_PARSE

要返回不是有效数字(包括NULL)的记录,请执行类似WHERE TRY_PARSE(val AS INT) IS NULL的操作。当然,性能可能会受到打击,但是几乎所有其他解决方案都将受到影响。

答案 3 :(得分:0)

where ISNULL(column,'1') LIKE '%[0-9]%'