sql - 检查TEXT列的内容是否为纯数字

标签 sql sqlite

我有一个Sqlite DB,其中的数据看起来纯粹是数字(整数),并且列的类型为TEXT。如果可能,我想将其键入为INTEGER。

哪个查询可以检查某个列的每个单元格是否可以成功转换为INT?

SELECT * FROM table WHERE INT(column) != NULL


或者,我想检查单元格是否为数字(没有任何字母/符号)

SELECT * FROM table WHERE column NOT LIKE "%a-z%"


附带说明一下,我想这样做是为了减少数据库的大小,但是由于Sqlite使用动态类型化(每个单元类型),这会对数据库的大小产生任何影响吗?

最佳答案

您必须检查是否所有值都可以转换为整数:

SELECT *
FROM MyTable
WHERE CAST(MyColumn AS INTEGER) IS NOT MyColumn;

关于sql - 检查TEXT列的内容是否为纯数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38268342/

相关文章:

mysql - 获取列中具有不同值的最后记录

mysql - SQL strip 最长公共(public)前缀

python - 将字典插入 sqlite3 数据库 - python

c# - 使用 SQLite 进行日志记录

sql - 存储过程最佳实践?他们应该在插入之前检查外键是否存在吗?

python - 通过 Python API 客户端发送到 BigQuery 时验证查询出现语法错误

mysql - SQL - 选择其中参数 A 是多个值之一且参数 B 相等

mysql - 学习MySQL、SQLite源码了解RDBMS实现

c# - 将现有的 MySql 数据库记录传输到 SqLite

android - 设置外键时游标找不到列