首页 > 解决方案 > 当数据为 VARCHAR 时如何在 SQL 中查询数字?

问题描述

我在 SQL 中将 .csv 文件克隆到我的数据库表中,示例数据如下所示:

[
    {
        "year": "1955",
        "rank": "1",
        "company": "General Motors",
        "revenue": "9823.5",
        "profit": "806"
    },
    {
        "year": "1955",
        "rank": "2",
        "company": "Exxon Mobil",
        "revenue": "5661.4",
        "profit": "584.8"
    },

一些利润列具有“NA”和负整数,但这些值都存储为 SQL 表中的“字符串”或 VARCHAR。

那么如何在sql中查询数字或不等于“NA”的数据(基本上我只想要包含任何正整数或负整数的数据)?我试过 ISNUMERIC() 但它说我需要进行类型转换?

标签: sqlpostgresql

解决方案


您可以使用像这里这样的正则表达式:

SELECT *
FROM yourTable
WHERE profit ~ '^-?\d+(?:\.\d+)?$';

但这里最好的设计方法是让profit列数字化。然后用NULL来表示缺失值。


推荐阅读