sql - 当数据为 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() 但它说我需要进行类型转换?
解决方案
您可以使用像这里这样的正则表达式:
SELECT *
FROM yourTable
WHERE profit ~ '^-?\d+(?:\.\d+)?$';
但这里最好的设计方法是让profit
列数字化。然后用NULL
来表示缺失值。
推荐阅读
- location - 通配符在 msggrep --location 中如何工作
- django - 更改模型字段时更新 django 任务
- java - 如何更新与hibernate的关系?
- json - 我有一个在 Postman 中工作但在 Flutter 中不工作的端点
- javascript - 如何在事务中使用循环运行多个存储过程?
- r - 将列添加到 R 中的文本文件
- python - 这两种设置默认值的方法是否等效?
- python - 如何在字典中的列表值中附加值
- angular - Jasmine:单元测试监视调用嵌套函数
- influxdb - Telegraf `docker_log` 不发送所有消息