选择我只有列的最后3个数字的位置。如何从该表中选择?

时间:2016-11-09 21:09:33

标签: sql-server

我需要从表中名为cGLsubaccount的列中进行选择,其中该列中的数字长度为9个数字(例如010009143)。我遇到的问题是我有一个字符串,其中包含另一个表的结果集,字符串每个包含3个数字(例如143,275,684,955)。这些数字对应于列cGLsubaccount的最后三个数字。如何编写一个sql语句来从最近3个cGLsubaccount数与列表中的数字匹配的表中进行选择?如果你能告诉我如何编写143的sql语句,它会帮助我。我试过了

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

但它不起作用。我需要你的帮助。 (我相信数据库是SQL-Server 2012)

2 个答案:

答案 0 :(得分:2)

试试这个。

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

答案 1 :(得分: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

FYI - 子查询返回

RetSeq  RetVal
1       143
2       275
3       684
4       955