Tôi đoán bạn muốn chuyển tập hợp số đó dưới dạng một chuỗi và chia thành các số riêng lẻ. Điều này khó hơn bạn nghĩ, bởi vì Oracle không đi kèm với một tokenizer tích hợp sẵn. Kỳ lạ, phải không?
Có một số giải pháp PL / SQL tokenizer xung quanh Das Interwabs. Tôi đang sử dụng một biến thể triển khai của Anup Pani, sử dụng Regex (do đó chỉ Oracle 10g trở lên). Biến thể của tôi trả về một mảng số mà tôi đã khai báo là kiểu SQL:
SQL> create or replace type numbers as table of number
2 /
Type created.
SQL>
Điều này có nghĩa là tôi có thể sử dụng nó làm đầu vào cho hàm TABLE () trong câu lệnh SELECT:
SQL> select * from table (str_to_number_tokens('20000, 240004, 375000, 255000'))
2 /
COLUMN_VALUE
------------
20000
240004
375000
255000
SQL>
Điều này có nghĩa là tôi có thể biến chuỗi số của bạn thành một bảng mà tôi có thể tham gia vào trong một truy vấn, như sau:
SQL> select val
2 from t23
3 , ( select column_value as i_no
4 from table (str_to_number_tokens('20000, 240004, 375000, 255000')) ) sq
5 where t23.year = 2010
6 and sq.i_no between t23.r_min and t23.r_max
7 order by t23.priority
8 /
VAL
----------
82
50
52
SQL>