我有一些数据如下:
Name Processors
dab1 8x10 - 1.06 GHz
bac3 2x6 - 2.4 GHz
abc1 4x8 - 2 GHz
cab2 2x4 - 1.2 GHz
在'处理器'列中,我需要能够将第一个数字和第二个数字相乘(例如:8 * 10 = 80,2 * 6 = 12等)以检查条件。
示例查询:
SELECT * FROM HOST_TABLE WHERE COMPUTED_PROCESSOR_VALUE > 16
如何计算此值?数字之间总是有一个“x”,但数字可以是单数字或双数字。
谢谢!
答案 0 :(得分:1)
SELECT m.Name, m.Processors FROM
(
SELECT Name, Processors, SUBSTR(Processors, 1, INSTR(Processors, 'x', 1, 1)-1) AS FirstValue,
SUBSTR(Processors, INSTR(Processors, 'x', 1, 1) + 1, INSTR(Processors, ' ', 1, 1) - INSTR(Processors, 'x', 1, 1)) AS SecondValue
FROM MyTable
) m
WHERE m.FirstValue * m.SecondValue > 16
答案 1 :(得分:0)
使用正则表达式,您的查询看起来类似于:
SELECT TO_NUMBER(REGEXP_SUBSTR(
processors, '^[:digit:]{1,2}')) *
TO_NUMBER(REGEXP_SUBSTR(
processors, '[:digit:]{1,2})', INSTR(processors, 'x')))
AS computed_processor_value
FROM host_table
WHERE computed_processor_value > 16;
我现在无法测试它,但它应该让你开始。
Oracle 10.1g的参考资料(如有必要,请调整您的版本):