SQL Server verwendet Platzhalter innerhalb von IN
Da ich glaube, dies sollte eine grundlegende Frage, ich weiß diese Frage wurde wahrscheinlich schon gefragt, aber ich bin nicht in der Lage, es zu finden. Ich bin wahrscheinlich zu verdienen, meine Peer-Druck Abzeichen, aber ich frag trotzdem:
Gibt es eine Möglichkeit im SQL Server, dass ich mich nicht bewusst für die Verwendung des Platzhalterzeichens %, wenn Sie mit IN.
Merke ich, dass ich verwenden kann, ODER wie:
select *
from jobdetails
where job_no like '0711%' or job_no like '0712%'
und in einigen Fällen kann ich eine Unterabfrage verwenden, wie:
select *
from jobdetails
where job_no in (select job_no from jobs where job_id = 39)
aber ich bin auf der Suche, etwas zu tun, wie die folgenden:
select *
from jobdetails
where job_no in ('0711%', '0712%')
In diesem Fall verwendet das Prozent-Zeichen als Zeichen und nicht von einem wildcard-Zeichen, so werden keine Zeilen zurückgegeben. Ich derzeit verwenden Sie einfach ein paar ODER ist, wenn ich habe, um dies zu tun, aber ich weiß, es muss einen besseren Weg geben. Welche Methode verwenden Sie für diese?
InformationsquelleAutor der Frage Dusty | 2009-07-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie etwa:
InformationsquelleAutor der Antwort Aaron Alton
Wie wäre es mit etwas wie das?
InformationsquelleAutor der Antwort GalacticCowboy
Ich denke ich habe eine Lösung zu dem, was der Urheber dieser Anfrage wollte in einfacher form. Es funktioniert für mich, und eigentlich ist es der Grund, warum ich kam hier, um zu beginnen mit. Ich glaube einfach Klammern verwenden, um die Spalte like '%text%' in Kombination mit
OR
s wird es tun.InformationsquelleAutor der Antwort notYetExpert
Könnten Sie versuchen, so etwas wie dieses:
Nicht genau, was du fragst, aber es hat den gleichen Effekt, und ist flexibel auch in anderer Weise 🙂
InformationsquelleAutor der Antwort Jeremy Smyth
InformationsquelleAutor der Antwort A-K
Hatte ich ein ähnliches Ziel - und kam zu dieser Lösung:
Gehe ich davon aus, dass Ihr verschiedene codes ('0711%', '0712%', usw.), einschließlich %, werden in einer Tabelle gespeichert, die ich aufrufen *table_of_codes* mit Feld code.
Wenn die % nicht gespeichert in der Tabelle von codes, nur verketten '%'. Zum Beispiel:
Die concat () - Funktion kann variieren, abhängig von der bestimmten Datenbank, soweit ich weiß.
Ich hoffe, dass es hilft. Ich an ihn aus:
http://us.generation-nt.com/answer/subquery-wildcards-help-199505721.html
InformationsquelleAutor der Antwort Julian
Ich mich zunächst fügte man aus statischen Tabelle mit ALLEN Möglichkeiten meiner wildcard-Ergebnisse
(diese Firma hat 4 Zeichen nvarchar-code als Ihren Orten, und Sie Platzhalter Ihre einheimischen)
d.h. Sie haben vielleicht 456? die Ihnen geben würde, 456[1] , 456[Z] ich.e 0-9 & a-z
Hatte ich ein Skript schreiben, um ziehen Sie den aktuellen Benutzer (erklären Sie) und ziehen Sie die Masken für den Benutzer erklärt.
Erstellen Sie einige temporäre Tabellen nur einfach diejenigen, um die Rangfolge der Zeilennummern für diese aktuelle Benutzer
Schleife durch jedes Ergebnis (IHR oder dies Oder das usw...)
Insert in die Tabelle test.
Hier ist das Skript, das ich benutzt:
InformationsquelleAutor der Antwort Tim
Den
IN
operator ist nichts aber ein schickesOR
' = ' Vergleiche. In der Tat ist es so, 'nichts als', die in SQL 2000, es war ein stack-überlauf-Fehler aufgrund von expansion derIN
inOR
s, wenn die Liste enthielt etwa 10k Einträge (ja, es gibt Leute die schreiben 10k Einträgen...). So können Sie keine wildcard-matching.InformationsquelleAutor der Antwort Remus Rusanu
In Access-SQL, das ich verwenden würde. Ich könnte mir vorstellen, dass der SQL Server hat die gleiche syntax.
select *
jobdetails aus
wo job_no wie "0711*" oder job_no wie "0712*"
InformationsquelleAutor der Antwort PowerUser
Als Jeremy Smith geschrieben, werde ich rekapitulieren, da konnte ich keine Antwort zu dieser speziellen Frage sein.
Wenn Sie nur
0711%
und0712%
Sie können auch Bereiche innerhalb der Klammern. Für dieNOT
keyword könnten Sie auch[^1-2]%
InformationsquelleAutor der Antwort Dan Mihalea
Haben Sie die Antwort direkt in Ihre Frage. Sie können nicht direkt übergeben wildcard bei der Verwendung IN. Allerdings können Sie eine sub-Abfrage.
Versuchen Sie dies:
Ich weiß, das sieht verrückt aus, wie können Sie nur bleiben, um mit ODER in Ihrer WHERE-Klausel. warum die Unterabfrage? Wie auch immer, der Unterabfrage wird der Ansatz nützlich, wenn Sie haben zu match details aus einer anderen Quelle.
Raj
InformationsquelleAutor der Antwort Raj
Versuchen, diese
das problem ist nur, dass
job '0713'
zurückgegeben wird, sowieso können
'07299999999999'
oder fügen Sie einfachand job_no <> '0713'
Dan zamir
InformationsquelleAutor der Antwort Dan Zamir
Diese könnte mir die einfachste Lösung zu verwenden
like any
In Teradata-diese funktioniert einwandfrei.
InformationsquelleAutor der Antwort Pablo