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来做但是筛选不出来
求大神们支招,尽量简单点哈,不然看不懂,体谅一下菜鸟!谢谢 展开
我现在只需要截取出43这个值,也就是最后一个逗号前面的值,应该怎么写?
注意:
我是要用来拼接在SQL语句里面进行筛选的哦,如下图:C_TransferID的值就是,1,4,5,21,43,我传一个参数43进去后,筛选出最后一个值等于43的所有数据
我本来想用like来做但是筛选不出来
求大神们支招,尽量简单点哈,不然看不懂,体谅一下菜鸟!谢谢 展开
3个回答
展开全部
取倒数第二个逗号和倒数第一个逗号的值是么?方法很多,举个例子:
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)
展开全部
上一句就描述清楚了,下一句注意你想表达的是什么意思,本来你是想得到43,还传递43进去,在C_TransferID,1,4,5,21,43,中又得到43,你这是什么意思???
更多追问追答
追问
C_TransferID的值为:,1,4,5,21,43,
我要传递一个参数进去,判断C_TransferID的最后一个数字跟传递的参数是否相等
要判断是否相等就要把C_TransferID字段中最后一个数字取出来,对吧?
我的问题就是怎么取出来,判断相等
给个简单点的方法吧 第一个哥们儿写的好复杂,我要拼接一个SQL字符串的
追答
懂了一点,还有一点,要是是传的43相等就把最后一个数字取出来,那要是传的4了,也有相等的,那怎么办???、要明确你到底想干什么?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用一个循环,找到最后一个逗号,就解决了。
追问
给个简单点的实例呗
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询