sql server 字符串截取的一些问题

例如,数据库里面的字段值为:,1,4,5,21,43,我现在只需要截取出43这个值,也就是最后一个逗号前面的值,应该怎么写?注意:我是要用来拼接在SQL语句里面进行筛选的... 例如,数据库里面的字段值为: ,1,4,5,21,43,
我现在只需要截取出43这个值,也就是最后一个逗号前面的值,应该怎么写?
注意:
我是要用来拼接在SQL语句里面进行筛选的哦,如下图:C_TransferID的值就是,1,4,5,21,43,我传一个参数43进去后,筛选出最后一个值等于43的所有数据

我本来想用like来做但是筛选不出来
求大神们支招,尽量简单点哈,不然看不懂,体谅一下菜鸟!谢谢
展开
 我来答
帐号已注销
推荐于2016-09-07 · TA获得超过315个赞
知道小有建树答主
回答量:225
采纳率:0%
帮助的人:252万
展开全部

取倒数第二个逗号和倒数第一个逗号的值是么?方法很多,举个例子:

with tmp(col) as(
select '123,3,3,56,77,233'
union all 
select  ',1,4,5,21,43,'
)
select reverse(substring(col,
                         CHARINDEX(',', col) + 1,
                         CHARINDEX(',', col, CHARINDEX(',', col) + 1) -
                         CHARINDEX(',', col) - 1))
  from (select reverse(col) as col from tmp) t

 如果只有一个逗号可以考虑CTE递归或者PLSQL:

with tmp(col) as(
select '77,233'
union all 
select  ',1,4,5,21,43,'
),
roy AS
 (SELECT col = 
         CAST(LEFT(col, CHARINDEX(',', col + ',') - 1) AS NVARCHAR(100)), Split = CAST(STUFF(col + ',', 1, CHARINDEX(',', col + ','), '') AS  NVARCHAR(100))  ,len(col)-len(REPLACE(col,',','')) as level
 from tmp
  UNION ALL   
  SELECT col = CAST(LEFT(Split, CHARINDEX(',', Split) - 1) AS NVARCHAR(100)),Split = CAST(STUFF(Split, 1, CHARINDEX(',', Split), '') AS NVARCHAR(100)),level-1
 FROM Roy  
   WHERE split > '')
select col from roy where level =1
更多追问追答
追问
哥们儿写的好复杂,我要拼接一个SQL字符串的,这样一长串怎么去拼接啊,先看看有没有其他方法吧
追答

如果 你的字段值 都是末尾都是  ,值,  这样的格式话,需要找出末尾的值是43 可以直接like ;传参的例子:

declare @userid varchar(20)
declare @v_sql varchar(4000)
set @userid ='43'
set @v_sql ='select * from tmp where col like ''%'+','+@userid+','+''''
exec(@v_sql)
xpy0928
2015-06-17 · TA获得超过582个赞
知道小有建树答主
回答量:461
采纳率:50%
帮助的人:334万
展开全部
上一句就描述清楚了,下一句注意你想表达的是什么意思,本来你是想得到43,还传递43进去,在C_TransferID,1,4,5,21,43,中又得到43,你这是什么意思???
更多追问追答
追问
C_TransferID的值为:,1,4,5,21,43,
我要传递一个参数进去,判断C_TransferID的最后一个数字跟传递的参数是否相等
要判断是否相等就要把C_TransferID字段中最后一个数字取出来,对吧?
我的问题就是怎么取出来,判断相等
给个简单点的方法吧 第一个哥们儿写的好复杂,我要拼接一个SQL字符串的
追答
懂了一点,还有一点,要是是传的43相等就把最后一个数字取出来,那要是传的4了,也有相等的,那怎么办???、要明确你到底想干什么?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
gongjiaxiang50
2015-06-17 · TA获得超过3171个赞
知道大有可为答主
回答量:2432
采纳率:50%
帮助的人:1110万
展开全部
用一个循环,找到最后一个逗号,就解决了。
追问
给个简单点的实例呗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式