2015-04-23 33 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 + '%' 
相關問題