2016-04-14 3 views
1

Ich habe ein Statement für Teradata von jemandem geschrieben, der hier nicht mehr arbeitet, also kann ich ihn nicht direkt fragen.
In diesem Statement ist die letzte Klausel in der wo ist: ... and Column_Name >= ''. Ich habe keine Ahnung, was diese Klausel tun soll.
Wenn es wichtig ist Column_name ist ein [decimal](7,0) NULL.eigentümliche Teradata-Klausel, Spaltenname> = ''

Kann mir jemand erklären, welche Fälle akzeptiert werden und welche von dieser Klausel abgelehnt werden?
mir Nähte es, dass sollte Trog alles erlauben, da alles zu null

+0

Wenn Wenn Sie einen String mit einem numerischen Wert vergleichen, wird der String in 'FLOAT' umgewandelt, in Ihrem Fall wird der leere String' '' 'als' 0' behandelt, also ist dies nur eine dumme Suche nach 'Column_Name> = 0 'und filtert negative Werte und' NULL'. Du weißt nie, ob das tatsächlich die Absicht des Typen war, der es geschrieben hat :) – dnoeth

+0

oh ok danke, ich vermute es kann so etwas sein, aber wir sind ohne Teradata Server (es ist eine komplizierte Situation) wo genau zu testen ist war. Wenn du es als Antwort schreiben willst, nehme ich es gerne an! – Jackyz

Antwort

1

Haupt- oder gleich Wenn Sie eine Zeichenfolge in einen numerischen Wert zu vergleichen, die Zeichenfolge in eine FLOAT umgewandelt wird, wird die leere Zeichenfolge in Ihrem Fall '' behandelt wie 0, so ist dies nur ein dummer Weg, um nach Column_Name >= 0 zu überprüfen und filtert negative Werte und NULL. Sie wissen nie, ob dies tatsächlich die Absicht des Kerls war, der es schrieb :)

0

Wenn> = '' Klausel auf eine Zeichenspalte angewendet wird, dann wird es die Nullsätze einschränken.

Wenn die Tabelle 2 Spalten hat eine REGION_CD & rank_nr und die Daten in der Tabelle als unten: -

select * from databasename.tablename; 

*** Query completed. 5 rows found. Two column returned. 
*** Total elapsed time was 1 second. 

Region |  rank_nr 
----------  ----------- 
emea  |   1 
amr  |   2 
apac  |   3 
?   |   4 
      |   5 

? ist repräsentiert in REGION_CD Spalte für Rang NULL und Platz = 5

nicht sichtbar ist, wenn wir in dieser Tabelle abfragen, mit denen Klausel als Region> = ‚‘ dann wird es unter 4 Zeilen ergeben: -

select * from databasename.tablename where Region_cd >='' ; 
*** Query completed. 4 rows found. 2 columns returned. 
*** Total elapsed time was 1 second. 

col1  | rank_nr 
---------- ----------- 
emea  |   1 
apac  |   3 
amr  |   2 
      |   5