在SQL中搜索技术(喜欢,包含)

时间:2010-07-19 06:51:17

标签: sql sql-server sql-server-2005

我想使用Like关键字或任何其他技术来比较和选择数据库中的字段。

我的查询如下:

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

但我的字段只包含'Ramakrishnan'

我的输入字符串包含一些额外字符xxxxxx_Ramakrishnan_zzzzz

我想要SQL查询。任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:2)

你的意思是你想要反过来?喜欢这个?

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

答案 1 :(得分:0)

您可以使用MySQL函数,LOCATE(),就像

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

答案 2 :(得分:0)

xxxxxx和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函数的可怕构造。