Das LIKE% VAL% Zeug wird übermäßig breit sein, z.B. die Datenbank enthält 00000und Sie suchen nach 1234 Sie werden diese Zeile ziehen, was das OP nicht beabsichtigt (wenn ich den "EXAKTEN" Teil richtig verstehe).
Was Sie wollen, ist ein regulärer Ausdruck, der so etwas wie: eine beliebige Anzahl von Nullen gefolgt von der Übereinstimmung und Ende der Zeile.
Aus dieser Frage, die wir wissen, wie führende Nullen zu trimmen: Better techniques for trimming leading zeros in SQL Server?
SUBSTRING(str_col, PATINDEX('%[^0]%', str_col+'.'), LEN(str_col))
So kombinieren, dass mit Ihrer Anfrage, und Sie können wie folgt etwas tun:
WHERE SUBSTRING(external_prv_id, PATINDEX('%[^0]%', external_prv_id+'.'), LEN(external_prv_id)) = '12345'
Natürlich , die bessere (beste?) Lösung wäre, sie als INTEGERS zu speichern, so dass Sie volle Indexierbarkeit erhalten und nicht mit all dem Mist Mist haben müssen.Wenn man wirklich die genaue Zeichenfolge speichern müssen, dann haben Sie ein paar Optionen:
- speichern die normalisierte integer in einer anderen Spalte führt und zu verwenden, die für alle internen Anfragen
- immer eine ganze Zahl speichern, aber dann Pad mit Nullen auf Abfrage (meine Stimme)
Meinst du finden "2035" (nicht "2034") in "0000020354"? Vielleicht möchten Sie die Frage bearbeiten. – MattH