Поиск строки с условиями - PullRequest
       2

Поиск строки с условиями

0 голосов
/ 17 декабря 2010

У меня есть таблица с именем, которое является строкой.Мне нужно создать оператор SQL, который ищет детей для узла, не находя детей для детей.Можно ли использовать LIKE и некоторые шаблоны для этого?Ниже вы можете увидеть некоторые примеры результатов, которые мне нужно получить, основываясь на моей строке поиска.

Строка поиска is / home. Затем должны быть возвращены следующие записи

/home/something
/home/somethingElse
but not
/home/something/foo
/home/something/bar
/home/somethingElse/foo

, но если поискстрока / home / что-то

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

Ответы [ 2 ]

2 голосов
/ 17 декабря 2010
 SELECT name FROM table
     WHERE name LIKE '/home/%' AND name NOT LIKE '/home/%/%'

должен отфильтровать что-нибудь с узлом второго уровня под ним.

1 голос
/ 17 декабря 2010

Я бы, вероятно, искал по количеству слешей в дополнение к реальным ключевым словам.Таким образом, первый будет искать / home с 1-2 / s

Второй будет / home / что-то с 2-3 слешами.

У меня нет sqlпередо мной, но я поработаю над примером кода для вас.

Редактировать:

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

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

END
GO

Эта маленькая функция будет хорошо работать для подсчета количества слешей в ваших строках.

Наслаждайтесь

Надеюсь, это поможет, ура,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...