Wie zu verwenden LIKE-Bedingung in SQL mit numerisches Feld?
Bin ich mit dieser Abfrage erhalten Sie einige Daten: "select * from emp where emp_name LIKE 's%'";
emp_nam ist character-Feld, wie kann ich mit der gleichen Logik Bedingung bei numerischen Feldern? so etwas wie:
"select * from emp where emp_id ????
where emp_id ist numerisches Feld.
Dank,
- Was wollen Sie erreichen? Sind Sie auf der Suche nach allen IDs, die beginnen mit z.B. 7?
- Es hängt von Ihrem DBMS-Motor, Büste die meisten von Ihnen tun, unterstützen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie nicht tun, eine wildcard auf eine Zahl, jedoch, wenn Sie wirklich müssen, können Sie konvertieren das Anzahl varchar und führen Sie dann das wildcard-match.
zB.
In Access können Sie verketten Sie das numerische Feld mit einem leeren string zu zwingen, in eine Zeichenfolge, die können Sie vergleichen mit WIE:
Beachten Sie auch, dass Access verwendet * nicht % als wildcard-Zeichen. Siehe: Like-Operator (Microsoft Access SQL).
In Access-Datenbank-engine SQL-syntax zu verwenden, die
%
Platzhalterzeichen ENTWEDER müssen Sie ANSI-92-Abfragemodus ODER verwenden Sie denALIKE
- Schlüsselwort anstelle desLIKE
Stichwort.Details der ANSI-92-Abfragemodus finden Sie Über ANSI-SQL-Abfrage-Modus (MDB) in der Access2003 Hilfe (das gleiche gilt für ACE in Access2007, aber Sie entfernt das Thema aus dem Access2007 Hilfe für einige Grund). Wenn Sie dies im code, den Sie brauchen, um den OLE DB z.B. ADO classic in VBA.
Für die
ALIKE
Stichwort... werden Sie nicht finden viel. Es ist eines dieser offiziell nicht dokumentierte Funktionen, d.h. es ist ein element der Gefahr, dass es entfernt werden kann aus einer zukünftigen überarbeitung der Access-Datenbank-engine. Ich persönlich würde dieses Risiko einzugehen, die über die explizit code für ANSI-89-Abfrage-Modus und ANSI-92-Abfragemodus, wie notwendig ist, um Validierungsregeln undCHECK
Einschränkungen (siehe Beispiel unten). Codierung für beide kann getan werden, aber es ist eher umständlich und schwierig zu bekommen Recht also hat mehr unmittelbare Gefahr, wenn Sie bekommen es falsch.Das ist die Antwort. Jetzt für die 'Lösung'...
Klar, wenn Sie brauchen, um diese Art von Abfrage auf emp_id dann die domain ist falsch, d.h. es sollte nicht ein numerisches Feld.
Heilung der Erkrankung: das schema ändern, machen dies zu einem Textfeld, das hinzufügen einer Domäne Regel sicherstellen, es enthält nur numerische Zeichen z.B.
BEARBEITEN Sie die 'Jet' - tag wurde nun Hinzugefügt. Die oben
CHECK
Einschränkung muss umgeschrieben werden, weil die Access-Datenbank-engine hat Ihre eigene syntax: ersetzen Sie die^
Charakter mit!
. Auch, um diese kompatibel mit ANSI-89-Abfrage-Modus und ANSI-92-Abfragemodus verwenden, das ähnliche Schlüsselwort d.h.Nein, können Sie nicht verwenden
LIKE
für numerische Felder.Versuchen Sie es mit
<
,>
oder=
,>=
,<=
😉Wenn Sie suchen möchten, in ein numerisches Feld für Dinge wie "ab 12" oder sth wie diese, die Ihr design nicht passt Ihre Bedürfnisse.
'%' wild card, die für mich gearbeitet auf MS -SQL-server. Sehen http://technet.microsoft.com/en-us/library/aa933232%28v=sql.80%29.aspx .
Die Abfrage
select * from MyTable where ID like '548%'
funktioniert auf MS-SQL-Server 2008 R2 und liefert Ergebnisse zurück, die mit ids 5481,5485 etc. Die Spalte ID istint
geben.Verwenden
cast
oderconvert
Funktion auf deremp_id
Feld, und Sie können vergleichen, mitlike
.mithilfe von CONCAT implic konvertieren integer zu string
SELECT * FROM city WHERE CONCAT(id_city,") LIKE '%119%'
Hallo ich hatte Mühe, dies mit einer float hatte ich den cast von zwei tims cast(cast ('EmpId' as bigint) varchar(15)) like '%903%' Hoffe jemand findet dies hilfreich
In der FileMaker SQL können Sie werfen ein Feld, um eine Zeichenkette mit der Funktion STRVAL:
SELECT * FROM emp WHERE STRVAL(emp_id) LIKE '1%'
Hier ist ein echtes Beispiel für die Verwendung dieser in FileMaker:
Wie, um eine Liste aller Aufzeichnungen, die enthalten eine ASCII-0 in einem numerischen Feld
SELECT emp_id FROM emp WHERE STRVAL(someNumericField) LIKE '%'+CHR(0)+'%'