Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

đầu ra có chữ cái đầu tiên và cuối cùng là nguyên âm (a, e, i, o, u)

Giả sử tất cả các tên thành phố đều là chữ thường, bạn có thể làm như sau:

select city
from   station
where  substr(city,  1, 1) in ('a', 'e', 'i', 'o', 'u')
  and  substr(city, -1, 1) in ('a', 'e', 'i', 'o', 'u')

substr(city, 1, 1) lấy chuỗi con của city bắt đầu từ vị trí 1 và có độ dài 1 (nghĩa là chỉ chữ cái đầu tiên). substr(city, -1, 1) rất giống nhau, chỉ khác vị trí:-1 có nghĩa là chữ cái đầu tiên từ end của chuỗi - vì vậy điều này sẽ cung cấp cho bạn chữ cái cuối cùng của tên thành phố.

Nếu city có thể có cả chữ hoa và chữ thường, trong WHERE mệnh đề sử dụng lower(city) thay vì city .

CHỈNH SỬA :Theo yêu cầu phổ biến, đây là cách tương tự có thể được thực hiện với các biểu thức chính quy. Mặc dù vậy, không có ích gì khi sử dụng phương pháp biểu thức chính quy ở đây; các hàm chuỗi chuẩn (như SUBSTR) gần như chắc chắn sẽ nhanh hơn nhiều so với bất kỳ hàm nào dựa trên biểu thức chính quy.

....
where regexp_like(city, '^(a|e|i|o|u).*(a|e|i|o|u)$', 'i')

(a|e|i|o|u) có nghĩa chính xác là một trong những ký tự đó. ^ có nghĩa là neo ở đầu chuỗi và tương tự $ ở cuối chuỗi. Nói một cách chính xác, điều này đòi hỏi tên thành phố phải dài ít nhất hai chữ cái; nếu tên thành phố có một chữ cái thì có thể sửa đổi dễ dàng. (Phương pháp SUBSTR sẽ không yêu cầu thay đổi.)

Đối số cuối cùng, 'i' , làm cho đối sánh regexp không phân biệt chữ hoa chữ thường (chỉ trong trường hợp cần thiết).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mức trung bình tối đa

  2. Io ngoại lệ:Lỗi Oracle ORA-12650 sau khi nâng cấp Oracle lên 12g

  3. Ghi nhật ký Quy trình lưu trữ Oracle Java bằng API ghi nhật ký Java (java.util.logging)

  4. Kết hợp Oracle SQL MIN và MAX từ cùng một bảng

  5. nội dung của tờ khai gói