Delen via


SQL-escapereeksen gebruiken

JDBC-stuurprogramma downloaden

Het Microsoft JDBC-stuurprogramma voor SQL Server ondersteunt het gebruik van SQL-escapereeksen, zoals gedefinieerd door de JDBC-API. Escape-reeksen worden in een SQL-instructie gebruikt om het stuurprogramma te laten weten dat het escape-deel van de SQL-tekenreeks anders moet worden verwerkt. Wanneer het JDBC-stuurprogramma het ontsnapte deel van een SQL-tekenreeks verwerkt, wordt dat deel van de tekenreeks omgezet in SQL-code die SQL Server begrijpt.

Er zijn vijf typen escapereeksen die vereist zijn voor de JDBC-API en alle typen worden ondersteund door het JDBC-stuurprogramma:

  • Letterlijke letterlijke jokertekens LIKE
  • Functieafhandeling
  • Letterlijke datum- en tijdgegevens
  • Aanroepen van opgeslagen procedures
  • Externe joins
  • Escape-syntaxis beperken

De syntaxis van de escapereeks die door het JDBC-stuurprogramma wordt gebruikt, is het volgende:

{keyword ...parameters...}

Opmerking

SQL-escapeverwerking is altijd ingeschakeld voor het JDBC-stuurprogramma.

In de volgende secties worden de vijf typen escapereeksen beschreven en hoe deze worden ondersteund door het JDBC-stuurprogramma.

Letterlijke letterlijke jokertekens LIKE

Het JDBC-stuurprogramma ondersteunt de {escape 'escape character'}-syntaxis voor het gebruik van jokertekens in LIKE-clausule als letterlijke waarden. De volgende code retourneert bijvoorbeeld waarden voor col3, waarbij de waarde van col2 letterlijk begint met een onderstrepingsteken (en niet het jokertekengebruik).

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

Opmerking

De escapereeks moet aan het einde van de SQL-instructie staan. Voor meerdere SQL-instructies in een opdrachtreeks moet de escapereeks aan het einde van elke relevante SQL-instructie staan.

Functiebeheer en -verwerking

Het JDBC-stuurprogramma ondersteunt escapereeksen voor functies in SQL-instructies met de volgende syntaxis:

{fn functionName}  

waarbij functionName een functie wordt ondersteund door het JDBC-stuurprogramma. Voorbeeld:

SELECT {fn UCASE(Name)} FROM Employee  

De volgende tabel bevat de verschillende functies die worden ondersteund door het JDBC-stuurprogramma bij het gebruik van een escape-reeks van functies:

Stringfuncties Numerieke functies Datum/tijd-functies Systeemfuncties
ASCII

CHAR

CONCAT

DIFFERENCE

INSERT

LCASE

LEFT

LENGTE

LOKALISEER

LTRIM

HERHAAL

REPLACE

RIGHT

RTRIM

SOUNDEX

SPACE

SUBSTRING

UCASE
ABS

ACOS

ASIN

ATAN

ATAN2

CEILING

COS

LEDIKANT

academische graden

EXP

FLOOR

logboek

LOG10

MOD

PI

POWER

RADIALEN

RAND

ROUND

SIGN

SIN

SQRT

TAN

Afkorten
CURDATE

CURTIME

DAGNAAM

DAYOFMONTH

DAGVANWEEK

DAYOFYEAR

UITTREKSEL

HOUR

MINUTE

MONTH

MAANDNAAM

NU

WIJK

SECOND

TIJDSTAMPADD

TIMESTAMPDIFF

WEEK

YEAR
DATABASE

IFNULL

USER

Opmerking

Als u een functie probeert te gebruiken die niet door de database wordt ondersteund, treedt er een fout op.

Letterlijke datum- en tijdgegevens

De escape-syntaxis voor letterlijke waarden voor datum, tijd en tijdstempel is het volgende:

{literal-type 'value'}  

waarbij literal-type een van de volgende opties is:

Letterlijk type Description Waardenotatie
d Datum jjjj-mm-dd
t Time uu:mm:ss [1]
Ts Tijdstempel jjjj-mm-dd uu:mm:ss[.f...]

Voorbeeld:

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

Aanroepen van opgeslagen procedures

Het JDBC-stuurprogramma ondersteunt de {? = call proc_name(?,...)} en {call proc_name(?,...)} escape-syntaxis voor opgeslagen procedure-aanroepen, afhankelijk van of u een retourparameter moet verwerken.

Een procedure is een uitvoerbaar object dat is opgeslagen in de database. Over het algemeen zijn het een of meer SQL-instructies die vooraf zijn gecompileerd. De syntaxis van de escapereeks voor het aanroepen van een opgeslagen procedure is als volgt:

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

waarbij procedure-name de naam van een opgeslagen procedure wordt opgegeven en parameter een opgeslagen procedureparameter wordt opgegeven.

Zie call voor meer informatie over het gebruik van de escapereeks met opgeslagen procedures.

Externe joins

Het JDBC-stuurprogramma ondersteunt de SQL92 linker-, rechter- en volledige outer join syntaxis. De escapereeks voor outer joins is als volgt:

{oj outer-join}  

waarbij outer-join het volgende is:

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

waarbij table-reference een tabelnaam is en search-condition de joinvoorwaarde is die u wilt gebruiken voor de tabellen.

Voorbeeld:

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'  

De volgende escapereeksen voor outer joins worden ondersteund door het JDBC-stuurprogramma:

  • Linker buitenste join
  • Rechterbuitenste joins
  • Volledige outer joins
  • Geneste outer joins

Escape-syntaxis beperken

Opmerking

De escapesyntaxis LIMIT wordt alleen ondersteund door Microsoft JDBC-stuurprogramma 4.2 (of hoger) voor SQL Server wanneer u JDBC 4.1 of hoger gebruikt.

De escapesyntaxis voor LIMIT is als volgt:

LIMIT <rows> [OFFSET <row offset>]  

De escapesyntaxis heeft twee delen: <rijen> zijn verplicht en geeft het aantal rijen op dat moet worden geretourneerd. OFFSET en <rijverschil> zijn optioneel en geven het aantal rijen op dat moet worden overgeslagen voordat u begint met het retourneren van rijen. Het JDBC-stuurprogramma ondersteunt alleen het verplichte onderdeel door de query te transformeren om TOP te gebruiken in plaats van LIMIT. SQL Server biedt geen ondersteuning voor de LIMIT-component. Het JDBC-stuurprogramma biedt geen ondersteuning voor de optionele <rijverschil> en het stuurprogramma genereert een uitzondering als deze wordt gebruikt.

Zie ook

Statements gebruiken met het JDBC-stuurprogramma