2015-04-23 98 views
0

我声明:如何修复在SQL代码中使用的子字符串?

declare @status varchar(255); 
set @status = 'seated' 

这是我的表结构是什么样子

**description** 
Seated, Unpaid 
Seated, Paid 
Return 
Seating Failed 
Unseated, Paid 
Upgraded 
Ticketed, Paid 
Unseatable 
etc. 

我一般代码:

select description 
from tr_status 
where description like Substring(@status,0,LEN(status)) 

我想什么做的是说在以往任何时候描述字段已经“坐”在其中(或者任何值作为我的参数传递)。作为说明的一部分,只返回坐着的那些行。

所以只有这些:在SQL

Seated, Unpaid 
Seated, Paid 
Unseated, Paid 
+0

在我之后的所有3种解决方案都是错误的,字符串串联是用||完成的。不是+ – maraca

+0

@maraca [这是不正确的。](https://msdn.microsoft.com/en-us/library/ms177561.aspx) –

+0

@MariM对不起,我错过了甲骨文,可能是另一个问题。我应该删除我的评论吗?或者把它留在那里,让人们知道你在回答什么? – maraca

回答

3
SELECT description 
FROM tr_status 
WHERE description LIKE '%' + @status + '%' 

%是一个通配符,因此将匹配任何字符序列。 LIKE语句允许在此通配符旁边连接变量,从而产生您要求的搜索类型。

+0

我知道它的通配符,但我不知道如何将它链接到参数。我没有意识到简单地连接它的作品。 – YelizavetaYR

0

你并不需要使用字符串为:

WHERE description LIKE @status 

应该做的伎俩。或者在最坏的情况下:

WHERE description LIKE '%' + @status + '%' 
相关问题