我想检查该列是否包含数字以外的值。我希望这个查询也能打印出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]%'
)
答案 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]%'