Sql 通过查看Oracle中数值的某些字符来选择语句

Sql 通过查看Oracle中数值的某些字符来选择语句,sql,oracle,select,Sql,Oracle,Select,第一个帖子在这里。请放轻松 在我的Oracle数据库中,我有一个名为fun_table的表。它包含一个名为FIRSTCOLUMN的列。此列仅包含六位数字的纯数值。以下是当前fun_表中的行: FIRSTCOLUMN ----------- 201502 201503 201601 我想从fun_表中编写SELECT语句,其中只有第六位数字不是“1”的值。由于随后每年的数据将遵循这种格式201602、201603、201701等。我不认为我希望忽略第六个字符为“1”的值 这有意义吗?这可以作为S

第一个帖子在这里。请放轻松

在我的Oracle数据库中,我有一个名为fun_table的表。它包含一个名为FIRSTCOLUMN的列。此列仅包含六位数字的纯数值。以下是当前fun_表中的行:

FIRSTCOLUMN
-----------
201502
201503
201601
我想从fun_表中编写SELECT语句,其中只有第六位数字不是“1”的值。由于随后每年的数据将遵循这种格式201602、201603、201701等。我不认为我希望忽略第六个字符为“1”的值

这有意义吗?这可以作为SQL中的SELECT语句吗


谢谢大家!

你有点让我困惑,但下面是:

我想从fun_表中编写SELECT语句,其中只有第六位数字不是“1”的值

DDL/DML示例:

create table fun_table (FIRSTCOLUMN INTEGER);
INSERT INTO FUN_TABLE (FIRSTCOLUMN) VALUES (201502);
INSERT INTO FUN_TABLE (FIRSTCOLUMN) VALUES (201503);
INSERT INTO FUN_TABLE (FIRSTCOLUMN) VALUES (201601);
COMMIT;
查询示例:

select *
from fun_table
where substr(firstcolumn,6) <> '1'
;
关于这一部分:

我不认为我希望忽略第六个字符为“1”的值


我真的不知道你的意思。如果你详细说明的话,我会详细说明我的答案。

不,没有什么意义。你想要除一月以外的所有月份吗?谢谢你的回复。这些数值中的第六位数字与一年中的第1-12个月不对应,但它们每年都以这种简单的格式重复出现;每年,我们都会看到第六个值是1、2和3的重复。所以明年此时,我们将看到以下数据:20150201503201601201602201603201701这有帮助吗?请尝试从表中选择firstcolumn,如“%1”;。如果它是数值的,那么你可以使用模10运算。这不是Oracle上的MODfirstcolumn,10 1吗?你的firstcolumn看起来像date。您可以将这些数字转换为日期,然后将日期分隔为年和月,或者可以使用提取,然后选择所有月份>1的位置。如果你需要一个例子,请告诉我!这就是我想要的输出——只输出201502和201503。你可以忽略我原来问题的最后一部分。这一点甚至可能没有必要提及。我相信这对你来说很简单,但这对我帮助很大。现在确保它适用于我的其他任务。也谢谢你,shawnt00。
SELECT firstcolumn FROM fun_table WHERE MOD(firstcolumn, 10) <> 1
SELECT firstcolumn FROM fun_table WHERE MOD(firstcolumn, 10) <> 1