Pertama, hampir selalu lebih efisien untuk melakukan semuanya dalam satu pernyataan jika memungkinkan.
Kueri kedua Anda tidak berfungsi karena Anda mengembalikan semuanya ke dalam satu string. Ini bukan daftar yang dipisahkan koma seperti yang disyaratkan oleh pernyataan IN.
Ada sedikit trik untuk menyiasatinya. Dengan asumsi Anda menggunakan string untuk sesuatu di antara dua pernyataan SELECT, Anda dapat bermain-main dengan regexp_substr()
untuk mengubah string Anda menjadi sesuatu yang berguna.
Sesuatu seperti ini akan berhasil;
select city
from vwpersonprimaryaddress
where state in (
select regexp_substr(v_province,'[^'',]+', 1, level)
from dual
connect by regexp_substr(v_province, '[^'',]+', 1, level) is not null
)
Variabel v_province
harus diubah untuk dikutip dua kali, misalnya '''AB'',''AZ'',''BC'''
agar ini berhasil.
Berikut adalah contoh kerja