Bằng cách sử dụng instr
.
select substr(help, 1, instr(help,' ') - 1)
from ( select 'hello my name is...' as help
from dual )
instr(help,' ')
trả về chỉ mục vị trí của lần xuất hiện đầu tiên của đối số thứ hai trong đối số đầu tiên, bao gồm chuỗi bạn đang tìm kiếm. tức là lần xuất hiện đầu tiên của ' '
trong chuỗi 'hello my name is...'
cộng với không gian.
substr(help, 1, instr(help,' ') - 1)
sau đó lấy chuỗi đầu vào từ ký tự đầu tiên đến chỉ mục được chỉ ra trong instr(...
. Sau đó, tôi xóa một cái để không có dung lượng ..
Đối với lần xuất hiện thứ n, chỉ cần thay đổi điều này một chút:
instr(help,' ',1,n)
là thứ n sự xuất hiện của ' '
từ ký tự đầu tiên. Sau đó, bạn cần tìm chỉ mục vị trí của chỉ mục tiếp theo instr(help,' ',1,n + 1)
, cuối cùng hãy tìm ra sự khác biệt giữa chúng để bạn biết mình phải đi bao xa trong substr(...
. Khi bạn đang tìm kiếm thứ n , khi n là 1 điều này bị hỏng và bạn phải xử lý nó, như sau:
select substr( help
, decode( n
, 1, 1
, instr(help, ' ', 1, n - 1) + 1
)
, decode( &1
, 1, instr(help, ' ', 1, n ) - 1
, instr(help, ' ', 1, n) - instr(help, ' ', 1, n - 1) - 1
)
)
from ( select 'hello my name is...' as help
from dual )
Điều này cũng sẽ bị phá vỡ ở n . Như bạn có thể thấy, điều này đang trở nên vô lý, vì vậy bạn có thể muốn xem xét sử dụng regular expressions
select regexp_substr(help, '[^[:space:]]+', 1, n )
from ( select 'hello my name is...' as help
from dual )