2016-10-06 3 views
0

Ich fand seltsames Verhalten der SQL-Abfrage in OrientDB Studio (auch im REST-Protokoll wiederholt).Orientdb Zitat in SQL-Abfrage

Mein Server-Version ist 2.2.5

Daten in meiner Klasse:

select * from name 

Ergebnis:

{ 
    "result": [ 
     { 
      "@type": "d", 
      "@rid": "#25:0", 
      "@version": 1, 
      "@class": "name", 
      "surname": "foo surname", 
      "name": "foo name" 
     }, 
     { 
      "@type": "d", 
      "@rid": "#26:0", 
      "@version": 1, 
      "@class": "name", 
      "surname": "bar surname", 
      "name": "bar name" 
     }, 
     { 
      "@type": "d", 
      "@rid": "#27:0", 
      "@version": 1, 
      "@class": "name", 
      "surname": "O'brien", 
      "name": "baz" 
     } 
    ], 
    "notification": "Query executed in 0.069 sec. Returned 3 record(s)" 
} 

Wo Eigenschaften Name und Vorname sind Textfelder.

erstelle ich einige SQL-Abfragen in Studio:

select * from name WHERE surname='O\'brien' 

Ergebnis:

{ 
"result": [ 
    { 
     "@type": "d", 
     "@rid": "#27:0", 
     "@version": 1, 
     "@class": "name", 
     "surname": "O'brien", 
     "name": "baz" 
     } 
    ], 
"notification": "Query executed in 0.016 sec. Returned 1 record(s)" 

}

funktioniert gut.

Next:

select * from name WHERE NOT (surname='O\'brien') 

Ergebnis:

{ 
"result": [ 
    { 
     "@type": "d", 
     "@rid": "#25:0", 
     "@version": 1, 
     "@class": "name", 
     "surname": "foo surname", 
     "name": "foo name" 
    }, 
    { 
     "@type": "d", 
     "@rid": "#26:0", 
     "@version": 1, 
     "@class": "name", 
     "surname": "bar surname", 
     "name": "bar name" 
    }, 
    { 
     "@type": "d", 
     "@rid": "#27:0", 
     "@version": 1, 
     "@class": "name", 
     "surname": "O'brien", 
     "name": "baz" 
    } 
], 
"notification": "Query executed in 0.015 sec. Returned 3 record(s)" 

}

In diesem Fall habe ich unerwartet drittes Ergebnis erhalten.

Next:

select * from name WHERE (NOT (surname='bar surname')) 

Ergebnis:

{ 
    "result": [ 
     { 
      "@type": "d", 
      "@rid": "#25:0", 
      "@version": 1, 
      "@class": "name", 
      "surname": "foo surname", 
      "name": "foo name" 
     }, 
     { 
      "@type": "d", 
      "@rid": "#27:0", 
      "@version": 1, 
      "@class": "name", 
      "surname": "O'brien", 
      "name": "baz" 
     } 
    ], 
    "notification": "Query executed in 0.017 sec. Returned 2 record(s)" 
} 

sieht gut aus.

Next:

select * from name WHERE (NOT (surname='O\'brien')) 

Ergebnis:

java.lang.NullPointerException 

Next:

select * from name WHERE (surname='O\'brien') 

Ergebnis:

Empty result 

Meine Frage - es ist ein Fehler, oder ich mache etwas falsch?

Diese Abfragen sind Teile von Abfrage-Generator, also muss ich verstehen, wie in OrientDB-Klammern funktioniert.

Danke.

+0

Können Sie versuchen, es in der neuesten Version? Wenn es weiterhin besteht, können Sie ein Problem auf github öffnen. –

+0

Ja, ich reproduziert es in der 2.2.12-SNAPSHOT, Ausgabe auf GitHub - https://github.com/orientechnologies/orientdb/issues/6786 – Montekidlo

Antwort

0

ODB ver2.2.12

Verwenden Sie verschiedene Arten des Zitats.

meine Daten:

select from V

{ 
    "result": [ 
     { 
      "@type": "d", 
      "@rid": "#9:0", 
      "@version": 1, 
      "@class": "V", 
      "name": "O'Brian" 
     }, 
     { 
      "@type": "d", 
      "@rid": "#10:0", 
      "@version": 1, 
      "@class": "V", 
      "name": "Pippo" 
     } 
    ], 
    "notification": "Query executed in 0.013 sec. Returned 2 record(s)" 
} 

select from V where NOT (name = "O'Brian")

{ 
    "result": [ 
     { 
      "@type": "d", 
      "@rid": "#10:0", 
      "@version": 1, 
      "@class": "V", 
      "name": "Pippo" 
     } 
    ], 
    "notification": "Query executed in 0.023 sec. Returned 1 record(s)" 
} 
+0

Ja, es funktioniert, aber wenn ich doppelte Anführungszeichen in Abfrage verwenden möchte, es funktioniert immer noch nicht: – Montekidlo

+0

wähle * von foo wo NICHT (name = "Bar \" Baz ") – Montekidlo