我有一个全部为NVARCHAR的表。我正在尝试在日期中添加一列;但是,该列中似乎有一些值不会转换为日期,并且会在中途抛出错误。
我正在尝试查找有问题的行。但是,我不知道如何将结果等于错误。
SELECT id,
CASE WHEN CAST(date_of_birth AS DATE) = error
THEN 1
ELSE 0
FROM TABLE1
表1
id date_of_birth
1 05/05/1934
2 feathers
3 06/06/1843
预期结果
id date_of_birth
1 0
2 1
3 0
关于如何隔离有问题的行的任何建议?
答案 0 :(得分:6)
使用TRY_CAST()
:
SELECT id,
(CASE WHEN TRY_CAST(date_of_birth AS DATE) IS NULL AND date_of_birth IS NOT NULL
THEN 1
ELSE 0
END) as is_bad_date_of_birth
FROM TABLE1;
答案 1 :(得分:1)
要识别错误行,请使用ISDATE函数:
SELECT * FROM TABLE WHERE ISDATE(date_of_birth)=0