2010-12-17 15 views
0

Ich habe Tabelle mit einem Namen, der String ist. Ich muss eine SQL-Anweisung erstellen, die nach Kindern zu einem Knoten sucht, ohne die Kinder zu den Kindern zu finden. Ist es möglich, LIKE und einige Wildcards zu verwenden? Sie können unten einige Beispiele der Ergebnisse sehen, die ich basierend auf meiner Suchzeichenkette erhalten muss.Suche nach String mit Bedingungen

Suchbegriff/home Dann werden die follwing Einträge

zurückgegeben werden sollte
/home/something 
/home/somethingElse 
but not 
/home/something/foo 
/home/something/bar 
/home/somethingElse/foo 

aber wenn der Suchbegriff ist/home/etwas

These should be returned 
/home/something/foo 
/home/something/bar 
+0

Welche RDBMS verwenden Sie - MySQL, SQL Server, etc? – JNK

+0

Ich verwende SQLite zum Testen und MySQL für die Produktion. – unkownt

Antwort

2
SELECT name FROM table 
    WHERE name LIKE '/home/%' AND name NOT LIKE '/home/%/%' 

sollte unter es etwas mit der zweiten Ebene Knoten herauszufiltern.

+0

Danke, das war irgendwie offensichtlich, kann nicht verstehen, wie ich nicht darüber nachgedacht habe. – unkownt

+0

Wenn es um das Offensichtliche geht, bin ich dein Mann. –

1

Ich würde wahrscheinlich auf die Anzahl der Schrägstriche suchen Zusätzlich zu den eigentlichen Keywords. Also würde der erste nach/home mit 1-2/'s suchen

Der zweite wäre/home/etwas mit 2-3 Schrägstrichen.

Ich habe nicht vor mir sql, aber ich werde an etwas Beispielcode für Sie arbeiten.

Edit:

CREATE FUNCTION [dbo].[ufn_CountChar] (@pInput VARCHAR(1000), @pSearchChar CHAR(1)) 
RETURNS INT 
BEGIN 

RETURN (LEN(@pInput) - LEN(REPLACE(@pInput, @pSearchChar, ''))) 

END 
GO 

Diese kleine Funktion wirkt schön die Anzahl der Schrägstriche in die Saiten zu zählen.

Genießen

hoffe, das hilft, Cheers,