Menggunakan urutan escape SQL

Unduh driver JDBC

Driver Microsoft JDBC untuk SQL Server mendukung penggunaan urutan escape SQL, seperti yang didefinisikan oleh JDBC API. Urutan escape digunakan dalam pernyataan SQL untuk memberi tahu driver bahwa bagian yang lolos dari string SQL harus ditangani secara berbeda. Ketika driver JDBC memproses bagian yang lolos dari string SQL, driver tersebut menerjemahkan bagian string tersebut ke dalam kode SQL yang SQL Server pahami.

Ada lima jenis urutan escape yang diperlukan JDBC API, dan semuanya didukung oleh driver JDBC:

  • SEPERTI literal kartubebas
  • Penanganan fungsi
  • Literal tanggal dan waktu
  • Panggilan prosedur tersimpan
  • Gabungan luar
  • Batasi sintaks escape

Sintaks urutan escape yang digunakan oleh driver JDBC adalah sebagai berikut:

{keyword ...parameters...}

Catatan

Pemrosesan escape SQL selalu diaktifkan untuk driver JDBC.

Bagian berikut menjelaskan lima jenis urutan escape dan bagaimana mereka didukung oleh driver JDBC.

SEPERTI literal kartubebas

Driver JDBC mendukung {escape 'escape character'} sintaks untuk menggunakan wildcard klausa LIKE sebagai harfiah. Misalnya, kode berikut akan mengembalikan nilai untuk col3, di mana nilai col2 secara harfiah dimulai dengan garis bawah (dan bukan penggunaan kartubebasnya).

ResultSet rst = stmt.executeQuery("SELECT col3 FROM test1 WHERE col2   
LIKE '\\_%' {escape '\\'}");  

Catatan

Urutan escape harus berada di akhir pernyataan SQL. Untuk beberapa pernyataan SQL dalam string perintah, urutan escape harus berada di akhir setiap pernyataan SQL yang relevan.

Penanganan fungsi

Driver JDBC mendukung urutan escape fungsi dalam pernyataan SQL dengan sintaks berikut:

{fn functionName}  

di mana functionName adalah fungsi yang didukung oleh driver JDBC. Contohnya:

SELECT {fn UCASE(Name)} FROM Employee  

Tabel berikut mencantumkan berbagai fungsi yang didukung oleh driver JDBC saat menggunakan urutan escape fungsi:

Fungsi String Fungsi numerik Fungsi Datetime Fungsi Sistem
ASCII

CHAR

CONCAT

DIFFERENCE

INSERT

LCASE

LEFT

LENGTH

MENEMUKAN

LTRIM

REPEAT

REPLACE

RIGHT

RTRIM

SOUNDEX

SPACE

SUBSTRING

UCASE
ABS

ACOS

ASIN

ATAN

ATAN2

CEILING

COS

COT

DEGREES

EXP

FLOOR

LOG

LOG10

MOD

PI

POWER

RADIANS

RAND

ROUND

SIGN

SIN

SQRT

TAN

TRUNCATE
CURDATE

CURTIME

DAYNAME

DAYOFMONTH

DAYOFWEEK

DAYOFYEAR

EKSTRAK

HOUR

MINUTE

BULAN

NAMA BULAN

NOW

KUARTAL

SECOND

TANDA WAKTU

TIMESTAMPDIFF

MINGGU

TAHUN
DATABASE

IFNULL

USER

Catatan

Jika Anda mencoba menggunakan fungsi yang tidak didukung database, kesalahan akan terjadi.

Literal tanggal dan waktu

Sintaks escape untuk literal tanggal, waktu, dan tanda waktu adalah sebagai berikut:

{literal-type 'value'}  

di mana literal-type adalah salah satu hal berikut:

Jenis Harfiah Deskripsi Format Nilai
d Tanggal dd-mm-yyyy
t Waktu hh:mm:ss [1]
ts TimeStamp yyyy-mm-dd hh:mm:ss[.f...]

Contohnya:

UPDATE Orders SET OpenDate={d '2005-01-31'}
WHERE OrderID=1025  

Panggilan prosedur tersimpan

Driver JDBC mendukung {? = call proc_name(?,...)} sintaks escape dan {call proc_name(?,...)} untuk panggilan prosedur tersimpan, tergantung pada apakah Anda perlu memproses parameter pengembalian.

Prosedur adalah objek yang dapat dieksekusi yang disimpan dalam database. Umumnya, ini adalah satu atau beberapa pernyataan SQL yang telah dikommpilasikan sebelumnya. Sintaks urutan escape untuk memanggil prosedur tersimpan adalah sebagai berikut:

{[?=]call procedure-name[([parameter][,[parameter]]...)]}  

di mana procedure-name menentukan nama prosedur tersimpan dan parameter menentukan parameter prosedur tersimpan.

Untuk informasi selengkapnya tentang menggunakan call urutan escape dengan prosedur tersimpan, lihat Menggunakan Pernyataan dengan Prosedur Tersimpan.

Gabungan luar

Driver JDBC mendukung sintaks gabungan kiri, kanan, dan luar SQL92. Urutan escape untuk gabungan luar adalah sebagai berikut:

{oj outer-join}  

di mana gabungan luar adalah:

table-reference {LEFT | RIGHT | FULL} OUTER JOIN
{table-reference | outer-join} ON search-condition  

di mana table-reference adalah nama tabel dan search-condition merupakan kondisi gabungan yang ingin Anda gunakan untuk tabel.

Contohnya:

SELECT Customers.CustID, Customers.Name, Orders.OrderID, Orders.Status
   FROM {oj Customers LEFT OUTER JOIN
      Orders ON Customers.CustID=Orders.CustID}
   WHERE Orders.Status='OPEN'  

Urutan escape gabungan luar berikut didukung oleh driver JDBC:

  • Gabungan luar kiri
  • Gabungan luar kanan
  • Gabungan luar penuh
  • Gabungan luar berlapis

Batasi sintaks escape

Catatan

Sintaks escape LIMIT hanya didukung oleh Microsoft JDBC Driver 4.2 (atau lebih tinggi) untuk SQL Server saat menggunakan JDBC 4.1 atau yang lebih tinggi.

Sintaks escape untuk LIMIT adalah sebagai berikut:

LIMIT <rows> [OFFSET <row offset>]  

Sintaks escape memiliki dua bagian: <baris> wajib dan menentukan jumlah baris yang akan dikembalikan. OFFSET dan <offset> baris bersifat opsional dan menentukan jumlah baris yang akan dilewati sebelum mulai mengembalikan baris. Driver JDBC hanya mendukung bagian wajib dengan mengubah kueri untuk menggunakan TOP alih-alih LIMIT. SQL Server tidak mendukung klausa LIMIT. Driver JDBC tidak mendukung offset> baris opsional <dan driver akan memberikan pengecualian jika digunakan.

Lihat juga

Menggunakan pernyataan dengan driver JDBC