2015-10-05 3 views
0

У нас есть большое количество фирменных имен, которые хранятся в нашей базе данных. Некоторые из наших клиентов вошли SSN в names..i пытаются получить все эти фирменные наименованияПолучите длину слова в предложении

Проблемы:

Найти длину каждого слова в наименовании и вернуть всех, кто имеет длину 9 или 11

Пример:

  1. тест 123456789 test2 - это должно показать в результате

  2. тест 123456 test2- - это не должно отображаться

  3. тест 123456789 test2 12345678911 - это должно показать

Любое слово в строке (цифры или алфавитов или их комбинацию), которая 9 или 11 должны быть возвращены .. спасибо

+3

Добро пожаловать в переполнение стека! Кажется, вы просите кого-нибудь написать для вас какой-то код. Переполнение стека - это вопрос и ответ, а не служба написания кода. Пожалуйста, [см. Здесь] (http://stackoverflow.com/help/how-to-ask), чтобы узнать, как писать эффективные вопросы. –

+0

thank @hcaelxxam решила мою проблему. Извините, если я попросил код, потому что я не знал, с чего начать, моя идея состояла в том, чтобы разделить строку на слова, а затем проверить длину для каждого слова, которое прошло бы дольше. . – showri

ответ

3

Вы можете использовать LIKE. Процент знаков, чтобы игнорировать что-либо до или после в имени столбца, пробелы, чтобы обеспечить пространство до и после, а затем поиск диапазона для числовых значений.

SELECT 
    * 
FROM 
    Table 
WHERE 
    Name LIKE '% [0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] %' 
    OR Name LIKE '% [0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] %' 

EDIT:

На самом деле, перечитывая исходную проблему, похоже, вы не искали только числовые строки из 9 или 11, но все строки. В этом случае @JoeMalpass, возможно, был более прав, чем я думал.

SELECT 
    * 
FROM 
    Table 
WHERE 
    --Surrounded by spaces 
    Name LIKE '% [^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ] %' 
    OR Name LIKE '% [^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ] %' 
    --At the beginning with extra information after 
    OR Name LIKE '[^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ] %' 
    OR Name LIKE '[^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ] %' 
    --At the beginning with extra information before 
    OR Name LIKE '% [^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ]' 
    OR Name LIKE '% [^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ]' 
    --The entire column 
    OR Name LIKE '[^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ]' 
    OR Name LIKE '[^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ]' 
+0

Вы также должны включить версии, которые начинаются или заканчиваются подстрокой (повторите предложение без '%' в начале/'%' в конце). – CactusCake

+0

Он также мог просто удалить пробелы, так как% не содержит ничего, но справедливую точку. – hcaelxxam

+0

Удаление пробелов тогда позволит любой подстроке длиннее 9/11 символов, хотя ... – CactusCake

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