2016-07-21 8 views
1

Ich bin nicht so in SQL und ich habe das folgende Problem.Wie kann ich alle Datensätze auswählen, die ein Bigint-Feld haben, beginnend mit einer bestimmten Ziffer?

ich havve diese einfache Abfrage JOIN schreiben:

select a.nome, a.cognome from Banker b 
INNER JOIN Anagrafica a 
ON b.AnagraficaID = a.ID 
INNER JOIN Polizza p 
ON p.BankerID = b.ID 
WHERE p.ID LIKE "7%" 

Mein Problem am letzten whre Klausel ist. Ich möchte, dass die in dem Zustand ist, dass alle zurückgegebenen Datensätze haben mit der Ziffer zu starten, aber ich erhalten diese Fehlermeldung:

14:59:07 [SELECT - 0 row(s), 0.000 secs] [Error Code: 207, SQL State: S0001] Invalid column name '7%'. 
... 1 statement(s) executed, 0 row(s) affected, exec/fetch time: 0.000/0.000 sec [0 successful, 0 warnings, 1 errors] 

Ich denke, es könnte abhängen, weil die ID Feld der Polizza Tabelle ist ein bigint und kein varchar.

Also, wie kann ich dieses Ding auf dieser Art von Feld implementieren? Ich brauche, dass es nur Datensatz zurückgeben, die die ID Feld der polizza Tabelle, die mit beginnt

+0

Verwenden Sie einfache Anführungszeichen anstelle von Anführungszeichen – HoneyBadger

Antwort

0

SQL Server verwendet einfache Anführungszeichen Strings ummanteln

select a.nome, a.cognome from Banker b 
INNER JOIN Anagrafica a 
ON b.AnagraficaID = a.ID 
INNER JOIN Polizza p 
ON p.BankerID = b.ID 
WHERE p.ID LIKE '7%' 
2

Try-ID zu werfen und doppelte Anführungszeichen von „7%“

WHERE CAST(p.ID AS VARCHAR(30)) LIKE '7%' 
0

entfernen Verwenden CAST

select a.nome, a.cognome from Banker b 
INNER JOIN Anagrafica a 
ON b.AnagraficaID = a.ID 
INNER JOIN Polizza p 
    ON p.BankerID = b.ID 
WHERE CAST(p.ID AS VARCHAR(50))LIKE '7%' 
Verwandte Themen