2016-11-09 28 views
1

我需要從表中的命名cGLsubaccount列做一個選擇,其中該列中的數字是9號長(例如010009143)。我遇到的問題是我有一個字符串,其中包含另一個表的結果集,每個字符串包含3個數字(例如143,275,684,955)。這些數字對應於列cGLsubaccount的最後三個數字。我如何編寫一個sql語句從表中選擇最後3個cGLsubaccount與列表中的數字匹配的表?如果你能告訴我如何寫143語句的sql語句,它會幫助我。我試過選擇我只有最後3列的數字。我如何從該表中選擇?

select cName, cGLsubaccount 
from HOUSE 
where cGLsubaccount like %123% 

但它沒有工作。我需要你的幫助。 (數據庫是SQL-Server 2012的我相信)

回答

2

試試這個。

select cName, cGLsubaccount 
from HOUSE 
where Right(cGLsubaccount,3) = @string 
+0

非常感謝!它正是我所需要的! – Tetteh

+0

@泰達優秀! –

1

而不是一次一個,你可以一次性查詢整個列表。

Declare @String varchar(max)='143,275,684,955' 

Select cName, cGLsubaccount 
From HOUSE A 
Join (
     Select RetSeq = Row_Number() over (Order By (Select null)) 
       ,RetVal = LTrim(RTrim(B.i.value('(./text())[1]', 'varchar(max)'))) 
     From (Select x = Cast('<x>'+ Replace(@String,',','</x><x>')+'</x>' as xml).query('.')) as A 
     Cross Apply x.nodes('x') AS B(i) 
    ) B 
On cGLsubaccount Like '%'+RetVal 

僅供參考 - 子查詢返回

RetSeq RetVal 
1  143 
2  275 
3  684 
4  955 
+0

非常感謝您! – Tetteh

+0

@Tetteh樂意提供幫助。 –

相關問題