2013-07-11 4 views
1

У меня есть таблица, в которой я хочу получить строки, которые похожи на ab aabb aaabbb ...... a n раз, за ​​которым следует b n раз, как показано ниже.Как использовать специальные символы в SQL Server Предложение LIKE

Например ТАБЛИЦА:

value 
---------- 
    ab 
    aabb 
    aaabbb 
    aaaabbbb 
    1 
    1a 
    abababa 

Я хочу, чтобы результат Таблица быть:

value  
---------- 
ab 
aabb 
aaabbb 
aaaabbbb 

Я попытался как этот

select * from [NumTest] where value LIKE '[a]+[b]+' 

но это возвращение нулевых строк.

Может ли кто-нибудь помочь мне, как использовать специальные символы в SQL Server LIKE?

+0

Что вы спрашиваете пишется как 'LIKE«% аб%» ', но это не собирается делать вы много хорошего, так как он вернется, например, 'ababa'. Если вы хотите получить точный результат, вам показалось, что нужна очень другая логика. Проверьте мой ответ –

ответ

2

Вот то, что может работать:

(EDIT - после того, как O/P комментарий, комментировал детали не нужны)

--WITH CTE_GoodValues AS 
--(
    SELECT value 
    FROM Table1 
    WHERE LEFT(VALUE,LEN(VALUE)/2) = REPLICATE('a',LEN(VALUE)/2) 
     AND RIGHT(VALUE,LEN(VALUE)/2) = REPLICATE('b',LEN(VALUE)/2) 
     AND LEN(VALUE)%2=0 
--) 
--SELECT REPLICATE(' ', (SELECT MAX(LEN(VALUE))/2 FROM CTE_GoodValues)- LEN(VALUE)/2) + VALUE 
--FROM CTE_GoodValues 

В КТР - выберите значения, которые оставили половину всех a -s и правая половина всего b -s. Затем найдите длину MAX и использовать его, чтобы скопировать необходимые пустые пространства перед

DEMO (после редактирования)

+0

Это дает результат в порядке, но он выглядит очень сложным для меня. И мне не нужны какие-либо ведущие пробелы, это просто плохое форматирование моего вопроса – Naresh

+0

@ ILLUMINATI7590 AH, в этом случае вы можете просто использовать внутренний SELECT из CTE –

Смежные вопросы