我有一个包含多列和350万行的表。我试图编写一条select语句,在其中可以选择B列的数据类型不属于 Date 数据类型的所有行。简单的例子
Column A Column B
abc 10/20/2014
cde abd 04/10/201 e
输出将为
Column A Column B
cde abd 04/10/201 e
请注意B列为nvarchar(255),数据类型为null
答案 0 :(得分:3)
select ColumnA
, ColumnB
from YourTable
where TRY_CONVERT(date, ColumnB) IS NULL
答案 1 :(得分:1)
您可以使用 TRY_CAST()
或 TRY_CONVERT()
并检查NULL
SELECT <Columns Here>
FROM <Table Name Here>
WHERE TRY_CAST(<Column Name Here> AS DATE) IS NULL;
但是,我建议将该列的数据类型更改为正确的数据类型,即DATE
/ DATETIME
,以确保数据仅是日期,并且您不会落伍在这个问题上。将日期存储为字符串确实是个坏习惯,您应该避免,因为这些数据类型是有原因的,所以请明智地使用它们。这是正确的方法。