SQL语句 获取指定位置的数据

Mark杨 2016-02-19 02:47:26


FCurrent表示当前位置
比如我要获取2个{}中的数据,就从当前位置0往后获取 也就是{1:10000083};{2:10000072}
如果当前位置是1的话,那么获取2个{}中的数据就是{2:1000072};{3:10000036}

我的代码是:

DECLARE @n INT--获取多少个
SET @n = 2
SELECT SUBSTRING(FCode,CHARINDEX(CONVERT(NVARCHAR(32),FCurrent+1)+ ':',FCode)-1,
CHARINDEX(CONVERT(NVARCHAR(32),FCurrent+@n)+ ':',FCode)+LEN(FCurrent+@n)+12 - CHARINDEX(CONVERT(NVARCHAR(32),FCurrent+1)+ ':',FCode) -1 )
FROM dbo.TProductCode WITH(NOLOCK) WHERE KPeriodsID = 23427


用这个写的哈,当FCode长度大的话,查询速度很慢,有什么其他的查询方法吗?
...全文
516 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Mark杨 2016-02-19
  • 打赏
  • 举报
回复
引用 2 楼 yenange 的回复:
你的设计本身就有问题。 如此长和复杂的数据, 怎么可能搞一个字符串? 改成用XML类型吧, 把数据有序设计, SQL Server取XML数据比象你这么弄还是能快几百上千倍的
我试试
Mark杨 2016-02-19
  • 打赏
  • 举报
回复
引用 3 楼 wmxcn2000 的回复:
如果长度是固定的,建议直接用 substring 截取就可以了。
不是固定的
卖水果的net 2016-02-19
  • 打赏
  • 举报
回复
如果长度是固定的,建议直接用 substring 截取就可以了。
吉普赛的歌 2016-02-19
  • 打赏
  • 举报
回复
你的设计本身就有问题。 如此长和复杂的数据, 怎么可能搞一个字符串? 改成用XML类型吧, 把数据有序设计, SQL Server取XML数据比象你这么弄还是能快几百上千倍的
xdashewan 2016-02-19
  • 打赏
  • 举报
回复
如果有外部程序还是建议你丢给外部程序处理,sql处理字符串的效率和外部程序无法相比

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧