如果使用 where 条件更改了列的数据类型,如何查找列的记录
Posted
技术标签:
【中文标题】如果使用 where 条件更改了列的数据类型,如何查找列的记录【英文标题】:How to find records of a column if the data type of a column has been changed using a where condition 【发布时间】:2013-05-21 06:12:45 【问题描述】:要知道表中列的数据类型是什么,我们使用'desc schema.table_name'
。如果特定列的数据类型已从 character
更改为 numeric
。
如何检查该表中是否有任何具有数据类型字符的记录。
我看到Select distinct column_1 from schema.table_name
给出了该列中所有不同的值
但是我们能否使用where
条件检查'character'
的数据类型是否进入此表?
【问题讨论】:
【参考方案1】:如果您使用的是 Sql。您可以使用此查询。
select column_name from table_name where column_name not like [0-9]
【讨论】:
【参考方案2】:如果您使用的是 oracle 服务器,请尝试此查询
SELECT * FROM table_name WHERE regexp_like(column_name,'[^0-9]+')
【讨论】:
我在使用 Oracle 11g 客户端,在 where 条件之后会抛出错误 我已经在 oracle 11g 中运行了这个查询,它对我来说工作正常。你到底遇到了什么错误?【参考方案3】:如果你理解正确,你可能想在 mysql 中使用REGEXP
SELECT *
FROM table1
WHERE column1 NOT REGEXP '^[0-9]+$'
SQLFiddle (MySql)
如果是 Oracle,还有 REGEXP_LIKE
SELECT *
FROM table1
WHERE NOT REGEXP_LIKE(column1, '^[0-9]+$')
或者没有REGEXP_LIKE
SELECT *
FROM table1
WHERE LENGTH(TRIM(TRANSLATE (column1, '0123456789',' '))) IS NOT NULL
SQLFiddle(Oracle 11g)
【讨论】:
我正在使用 Oracle 客户端,它说 REGEXP 是无效的关系运算符 您使用的是 MySql 还是 Oracle RDBMS?以上是关于如果使用 where 条件更改了列的数据类型,如何查找列的记录的主要内容,如果未能解决你的问题,请参考以下文章
如何根据postgres的jsonb列的where条件(无本机查询)使用jpa在spring boot中选择数据?