2010-07-19 296 views
1

我想比较并使用Like关键字或任何其他技术从数据库中选择一个字段。在SQL中搜索技术(Like,Contain)

我的查询如下:

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

但我的字段仅包含“莱玛克里斯南”

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

我想这个SQL查询。谁能帮帮我吗?

回答

2

你的意思是你想要它的另一种方式?喜欢这个?

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

我的一个字段“FormTypes”包含一些像这样的'Form1','Form2','Form3'等等的值。我得到这样的输入字符串'xxxhhuuForm1yyuusss'.Form1在输入字符串中,我想从输入字符串中识别出这个FormType,并使用like关键字进行比较,Sql中是否有任何可用的选项用于此目的? – Ramakrishnan 2010-07-19 07:02:12

+0

请帮助我,谢谢。 – Ramakrishnan 2010-07-19 07:02:42

+0

@Ramakrishnan:这种方法对我来说很好。试一试:) – onedaywhen 2010-07-19 07:32:14

0

您可以使用MySQL的功能,找到()正是像,

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

OP在SQL Server上。 – 2010-07-19 08:26:16

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,倒档和LEN功能。