【发布时间】:2015-02-17 17:46:35
【问题描述】:
第一次发帖。请放轻松。 :)
在我的 Oracle 数据库中,我有一个名为 fun_table 的表。它包含一个名为FIRSTCOLUMN 的列。此列仅包含六位纯数字值。以下是当前fun_table 中的行:
FIRSTCOLUMN
-----------
201502
201503
201601
我想从 fun_table 中编写一个 SELECT 语句,其中只有第六位不是“1”的值。而且由于随后每年的数据都将遵循这种格式(201602、201603、201701 等),我不相信我希望简单地忽略第六个字符为“1”的值.
这有意义吗?这可以作为 SQL 中的 SELECT 语句吗?
谢谢!
【问题讨论】:
-
不,没有任何意义。您想要除一月之外的所有月份吗?
-
感谢您的回复。这些值中的第六位数字不对应于一年中的第 1-12 个月,没有。不过,他们每年都以这种简单的形式重复;每年,我们都会看到重复的第六个值是 1、2 和 3。所以明年这个时候,我们会看到以下数据:201502,201503,201601,201602,201603,201701有帮助吗?
-
试试
select firstcolumn from table where to_char(firstcolumn) like '%1';。 -
如果它是数字,那么您可以使用模 10 运算。这不是 Oracle 上的
MOD(firstcolumn, 10) <> 1吗? -
您的第一列看起来像日期。您可以将这些数字转换为日期,然后将日期与年份和月份分开,或者您可以使用提取,然后选择所有月份 > 1 的地方。如果您需要示例,请告诉我。