从包含来自单独列的数据的列中选择数据

Posted

技术标签:

【中文标题】从包含来自单独列的数据的列中选择数据【英文标题】:Selecting data from a column that contains data from a separate column 【发布时间】:2018-11-29 16:27:28 【问题描述】:

我正在使用 SQL PLUS。

我有一个包含两列的表,SERIALNUMBER 和 ITEMNUMBER。

我正在尝试查找 ITEMNUMBER 包含 SERIALNUMBER,但数据前面也有 00 的情况。

例如:我有 SERIALNUMBER 1234567 和 ITEMNUMBER 001234567,我正在尝试查找 ITEMNUMBER 包含 SERIALNUMBER 但前面也有 00 的情况。显然,我还有其他 SERIALNUMBER 和 ITEMNUMBER 完全匹配的情况,这就是我试图通过找到不匹配的情况并更改它们来实现的。

我有这样的事找了几个例子:

SELECT COUNT(*) from TABLE WHERE ITEMNUMBER LIKE '%00%';

这给了我很多包含 00 的仪表,但这不一定是我想要的。

有人能指出我正确的方向吗?

【问题讨论】:

【参考方案1】:

您正在使用LIKE '%00%',它将在任何位置找到 00。要在开头找到它,您需要将其设置为 LIKE '00%',百分比仅位于值的末尾。

【讨论】:

【参考方案2】:

一个快速而肮脏的选择可能是使用INSTR

select * from test
where instr(itemnumber, serialnumber) > 0  -- ITEMNUMBER contains SERIALNUMBER ...
  and itemnumber like '00%';               -- ... and ITEMNUMBER begins with 00

【讨论】:

这正是我想要的!感谢注释掉的部分解释每一行。【参考方案3】:

这将起作用:

select count(*) from table where regexp_like(itemnumber,'^(00)('||serialnumber||')$');

【讨论】:

【参考方案4】:
SELECT * FROM Table Where ItemNumber = '00'+SerialNumber

会给你所有的记录,其中 itemnumber 是前面有 2 个零的序列号。这就是你要找的吗?

最终你可以通过以下方式更新它:

UPDATE Table SET ItemNumber = SerialNumber where ItemNumber = '00'+SerialNumber

【讨论】:

以上是关于从包含来自单独列的数据的列中选择数据的主要内容,如果未能解决你的问题,请参考以下文章

R数据存储在一个数据框列的两个列表中,想要创建单独的列

如何在python中使用正则表达式在字符串之间选择值并放置在数据框的列中

修剪数据并放在单独的列中

如何从包含在单个列中的文本构建 data.frame?

如何在单独的列中添加排序列名称,而不是在下拉列表中选择列来对表进行排序?

逻辑操作:从数据框中的列中选择两个值