【问题标题】:Where condition on a column datatype列数据类型的条件
【发布时间】:2019-01-08 21:02:00
【问题描述】:

我有一个包含多列和 350 万行的表格。我正在尝试编写一个选择语句,我可以在其中选择 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

【问题讨论】:

    标签: sql sql-server tsql sql-server-2016


    【解决方案1】:

    查看TRY_CONVERT()

    select ColumnA
        , ColumnB
    from YourTable
    where TRY_CONVERT(date, ColumnB) IS NULL
    

    【讨论】:

    • 比我的回答好多了。 +1
    【解决方案2】:

    您可以使用 TRY_CAST()TRY_CONVERT() 并检查 NULL

    SELECT <Columns Here>
    FROM <Table Name Here>
    WHERE TRY_CAST(<Column Name Here> AS DATE) IS NULL;
    

    但是,我建议将该列的数据类型更改为正确的数据类型,即DATE/DATETIME,以确保数据仅为日期,并且您不会陷入此问题。将日期存储为字符串确实是您应该避免的不好的做法,这些数据类型的存在是有原因的,因此请明智地使用它们。这是正确的方法。

    【讨论】:

      猜你喜欢
      • 2018-11-03
      • 2018-05-14
      • 2019-01-11
      • 2022-11-30
      • 2021-04-03
      • 1970-01-01
      • 2021-08-04
      • 1970-01-01
      相关资源
      最近更新 更多