2016-11-09 45 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乐意提供帮助。 –

相关问题