2010-07-19 2 views
1

Я хочу сравнить и выбрать поле из БД с использованием ключевого слова Like или любой другой техники.Поиск техники в SQL (как, Contain)

Мой запрос состоит в следующем:

SELECT * FROM Test WHERE name LIKE '%xxxxxx_Ramakrishnan_zzzzz%'; 

но мои поля содержат только

Моя Входная строка «Ramakrishnan» содержит некоторый дополнительный символ xxxxxx_Ramakrishnan_zzzzz

Я хочу, чтобы запрос SQL для этого. Кто-нибудь может мне помочь, пожалуйста?

ответ

2

Вы имеете в виду, что хотите это наоборот? Как это?

Select * from Test where 'xxxxxx_Ramakrishnan_zzzzz' LIKE '%' + name + '%'; 
+0

Одно из моих полей «FormTypes» Содержит значения, такие как «Form1», «Form2», «Form3» и т. Д. Я получаю строку ввода, такую ​​как «xxxhhuuForm1yyuusss». Form1 находится внутри входной строки, я хочу идентифицировать этот FormType из входной строки и сравнивать с помощью как ключевого слова, есть ли какие-либо параметры, доступные в Sql для этой цели? – Ramakrishnan

+0

, пожалуйста, помогите мне в этом, спасибо. – Ramakrishnan

+0

@Ramakrishnan: этот подход выглядит хорошо для меня. Дайте ему попробовать :) – onedaywhen

0

Вы можете использовать функции MySQL, LOCATE() точно, как,

SELECT * FROM WHERE LOCATE("Ramakrishnan",input) > 0 
+0

OP находится на SQL Server. –

0

Являются хххххй и Zzzzz бит всегда 6 и 5 символов? Если это так, то это выполнимо с небольшим сокращением строк.

with Test (id,name) as (
select 1, 'Ramakrishnan' 
union 
select 2, 'Coxy' 
union 
select 3, 'xxxxxx_Ramakrishnan_zzzzz' 
) 

Select * from Test where name like '%'+SUBSTRING('xxxxxx_Ramakrishnan_zzzzz', 8, CHARINDEX('_',SUBSTRING('xxxxxx_Ramakrishnan_zzzzz',8,100))-1)+'%' 

Результаты в:

id name 
1 Ramakrishnan 
3 xxxxxx_Ramakrishnan_zzzzz 

Если они переменной длины, то это будет ужасно строительство SUBSTRING, CHARINDEX, REVERSE и функции LEN.

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