Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

bagaimana cara menggunakan regexp_like Oracle di Hibernate HQL?

Sebenarnya, Anda tidak dapat membandingkan hasil REGEXP_LIKE dengan apa pun kecuali dalam pernyataan bersyarat di PL/SQL.

Hibernate tampaknya tidak menerima fungsi khusus tanpa returnType, karena Anda selalu perlu membandingkan output dengan sesuatu, yaitu:

REGEXP_LIKE('bananas', 'a', 'i') = 1

Karena Oracle tidak mengizinkan Anda untuk membandingkan hasil fungsi ini dengan apa pun, saya menemukan solusi menggunakan kondisi kasus:

public class Oracle10gExtendedDialect extends Oracle10gDialect {

    public Oracle10gExtendedDialect() {
        super();
        registerFunction(
          "regexp_like", new SQLFunctionTemplate(StandardBasicTypes.BOOLEAN,
          "(case when (regexp_like(?1, ?2, ?3)) then 1 else 0 end)")
        );
    }

}

Dan HQL Anda akan terlihat seperti ini:

REGEXP_LIKE('bananas', 'a', 'i') = 1

Ini akan berhasil :)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Spring Boot Actuator/titik akhir kesehatan tidak menampilkan informasi database atau sistem file

  2. Bagaimana cara menghentikan proses oracle undo?

  3. karakter hingga saat ini di Oracle sql

  4. Bagaimana cara mengetahui kapan tabel tertentu dibuat di Oracle?

  5. Menciutkan catatan tanggal hanya jika nilainya tidak berubah - Oracle SQL