问题:
+------+--------+
| NAME | BINARY |
+------+--------+
| A | 1101 |
| B | 0011 |
+------+--------+
我有带有NAME和BINARY值的表。我必须通过考虑行各自的BINARY值来复制行,包括用于ID的列。
在给定的示例中,名称A的BINARY值为1101
,这意味着它应具有3行,其ID为A-01,A-02,A-04,并且不应为A-03添加任何行,因为在Binary中该行为0值(11’0’1
)。如何在Oracle SQL查询中执行此操作?我用11克
预期产量:
+------+--------+------+
| NAME | BINARY | ID |
+------+--------+------+
| A | 1101 | A-01 |
| A | 1101 | A-02 |
| A | 1101 | A-04 |
| B | 0011 | B-03 |
| B | 0011 | B-04 |
+------+--------+------+
您可以使用dual
带有connect by level
子句的from查询来生成一系列从1到4的数字,然后在表上对其进行(反)联接,并检查该位置中的字符binary
是a0
还是a 1
:
SELECT name, bin, name || '-0' || lev AS id
FROM mytable
JOIN (SELECT LEVEL AS lev
FROM dual
CONNECT BY LEVEL <= 4) ON SUBSTR(bin, lev, 1) != '0'
此查询的假设:
bin
,是binary
因为它是保留字。binary
如果需要,可以使用引号并将其引起来。bin
列是varchar
。如果不是,只需to_char
在查询中将其转换为字符串即可本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句