2016-07-14 5 views
0

Wenn ich die folgende Abfrage in BigQueury ausführen, erhalte ich keine Ergebnisse.Bigquery SELECT * FROM Tabelle wobei Spalte = 'String' keine Werte zurückgibt

SELECT COUNT(*) FROM raw.bicc_customers WHERE sub_type = "SUD" 

Ich erhalte keine Ergebnisse

Allerdings, wenn ich

SELECT COUNT(*) FROM raw.bicc_customers WHERE sub_type LIKE "%SUD%" 

betreibe ich Ergebnisse. Das Feld, das ich suche, ist SUD ohne Leerzeichen, ich verstehe nicht, warum ich Wildcards brauche, um es zu finden. Was vermisse ich?

EDIT:

So in der Tabelle die Spalte tatsächlich "SUD" ist - Wie würden Sie dies ohne Platzhalter finden?

+0

Ist es möglich, dass "SUD" Räume oder versteckte Zeichen hat um es? – William

+0

Sind Sie sicher, dass vor oder nach "SUD" keine Leerzeichen/Sonderzeichen stehen? – Siyual

+0

Versuchen Sie, 'LENGTH()' an den zurückgegebenen Werten auszuführen, indem Sie 'LIKE' verwenden. Sie werden wahrscheinlich feststellen, dass sie mehr als 3 Zeichen haben. –

Antwort

1

So in der Tabelle die Spalte tatsächlich ist „SUD“ - Wie würden Sie dieses ohne Platzhalter finden?

Option 1 - Flucht doppelte Anführungszeichen - siehe Escaping special characters in strings für mehr Details

SELECT COUNT(*) 
FROM raw.bicc_customers 
WHERE sub_type = "\"SUD\"" 

Option 2 - mit einfachen Anführungszeichen

SELECT COUNT(*) 
FROM raw.bicc_customers 
WHERE sub_type = '"SUD"' 
3

Ich konnte keinen Kommentar hinzufügen, weil ich zu neu bin.

Aber versuchen Sie diese Abfrage, um zu ermitteln, was falsch ist.

SELECT LENGTH(sub_type) FROM raw.bicc_customers WHERE sub_type LIKE "%SUD%" 

Wenn Sie sehen, dass alle Längenwerte sind größer als 3 ist, bedeutet, dass man um ihn herum einige Leerzeichen haben.

Sie können dies auch tun, um zu überprüfen:

SELECT LENGTH(sub_type) FROM raw.bicc_customers WHERE LTRIM(RTRIM(sub_type)) = "SUD" 
Verwandte Themen