2013-07-23 2 views
1

есть способ выполнить предложение where, которое будет соответствовать только 2 t независимо от того, где они находятся.запрос, где поле содержит 2 t's

, такие как

Мэтью - будет работать

Танатоса - будет работать

Танатос T - не будет работать

Тома - не будет работать

Я был Google, но не мог найти вещь конкретная об этом

любая помощь apreciated

+0

Вы пробовали 'LIKE '% t% t%' И НЕ НРАВИТСЯ '% t% t% t%''? – hatchet

+0

Хмм не думал об этом, думал, что «% t% t% t%» остановит 3 т, но не остановится при остановке 4 т или более. спасибо – JosephK

ответ

1

Вы можете попробовать

SELECT * 
FROM Table 
WHERE Field LIKE '%t%t%' AND Field NOT LIKE '%t%t%t%' 

Я любопытство, которое было бы быстрее, это или Ответ Goat CO.

+0

ли тот, кто быстрее, я не знаю, но ответы на топоры, кажется, работают отлично. Я тестировал его до 6 т, и он все еще дал правильные результаты, спасибо снова – JosephK

0

Вы можете использовать LEN() и REPLACE():

SELECT * 
FROM Table 
WHERE LEN(REPLACE(field,'t','tt')) - LEN(Field) = 2 

Демо: SQL Fiddle

+0

Это не работает с именем типа «Боб Т». В моем тесте SQL Server также удалил конечное пространство, в результате чего он прошел тест. Но если бы не это, это было немного быстрее, чем мой ответ. – hatchet

+1

@hatchet. , , Это простое решение: len (replace (field, 't', 'tt')) - len (field) = 2'. –

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