sql字符串截取问题

2025-03-22 23:23:53
推荐回答(2个)
回答1:

取倒数第二个逗号和倒数第一个逗号的值是么?方法很多,举个例子:
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

回答2:

用的什么数据库?
楼上那个胡诌八扯你也追问,一看就不知道哪复制的。
你把你上边结果也罗列一下。