传递给 LEFT 或 SUBSTRING 函数的长度参数无效。用Reverse substring 处理值之后如何调取

野鼻孔 2016-04-09 10:20:15
With TA11 as (select Reverse(substring(REVERSE(Diary_Note),3,CharIndex('''',Reverse(Diary_Note), 4)-3 )) as DiaryN from A_Diary_Notes(nolock) where CharIndex('Reassign application', Diary_Note) > 0)
select DiaryN from TA11

用以上语句可以得出结果
DiaryN
4300802
4300781
反欺诈组长
反欺诈大组

我想select DiaryN from TA11 where TA11.DiaryN = '反欺诈大组'
但是会报错:
传递给 LEFT 或 SUBSTRING 函数的长度参数无效。

求大神帮助,如何处理
...全文
892 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
唐诗三百首 2016-04-11
  • 打赏
  • 举报
回复
这样的写法有风险, 临时方法: 先把查询结果存为临时表,然后再查询,

With TA11 as (select Reverse(substring(REVERSE(Diary_Note),3,CharIndex('''',Reverse(Diary_Note), 4)-3 )) as DiaryN from A_Diary_Notes(nolock) where CharIndex('Reassign application', Diary_Note) > 0)
select DiaryN into #t from TA11

select DiaryN from #t where DiaryN = '反欺诈大组'
唐诗三百首 2016-04-11
  • 打赏
  • 举报
回复
应该是字符串截取的算法问题, LZ最好提供一下A_Diary_Notes表Diary_Note字段的若干个样本值,处理逻辑,希望结果, 我们才好分析.
中国风 2016-04-11
  • 打赏
  • 举报
回复
相同的贴发一贴就行了,在另一贴已回复
道素 2016-04-10
  • 打赏
  • 举报
回复
你把CharIndex('''',Reverse(Diary_Note), 4)-3 的值select出来,看看有么有负数
道素 2016-04-10
  • 打赏
  • 举报
回复
引用 6 楼 yebikong222 的回复:
[quote=引用 4 楼 ch21st 的回复:] [quote=引用 3 楼 yebikong222 的回复:] [quote=引用 2 楼 ch21st 的回复:] 你把CharIndex('''',Reverse(Diary_Note), 4)-3 的值select出来,看看有么有负数
值绝大多数都为 -3 只有少量为整数 5 6 13 等[/quote] 问题就出在这里,substring和left函数中的长度不能负数 你先看看为啥是负数,然后利用case when将为负数的值改为合法的值,保证不出错。[/quote] 问题就在这。-3是为了控制显示的位数。。 变成正的,显示的位数不对了。求解决方法或者例子[/quote] 你举几个原始数据的例子,大致说下你的需求
野鼻孔 2016-04-10
  • 打赏
  • 举报
回复
引用 4 楼 ch21st 的回复:
[quote=引用 3 楼 yebikong222 的回复:] [quote=引用 2 楼 ch21st 的回复:] 你把CharIndex('''',Reverse(Diary_Note), 4)-3 的值select出来,看看有么有负数
值绝大多数都为 -3 只有少量为整数 5 6 13 等[/quote] 问题就出在这里,substring和left函数中的长度不能负数 你先看看为啥是负数,然后利用case when将为负数的值改为合法的值,保证不出错。[/quote] 问题就在这。-3是为了控制显示的位数。。 变成正的,显示的位数不对了。求解决方法或者例子
道素 2016-04-10
  • 打赏
  • 举报
回复
引用 3 楼 yebikong222 的回复:
[quote=引用 2 楼 ch21st 的回复:] 你把CharIndex('''',Reverse(Diary_Note), 4)-3 的值select出来,看看有么有负数
值绝大多数都为 -3 只有少量为整数 5 6 13 等[/quote] 问题就出在这里,substring和left函数中的长度不能负数 你先看看为啥是负数,然后利用case when将为负数的值改为合法的值,保证不出错。
野鼻孔 2016-04-10
  • 打赏
  • 举报
回复
求大神帮忙看看如何解决这个问题,这个问题我这边无法避免,这是对一个结果的查询,一定要可以选择结果中的某一类,作为一个条件。
野鼻孔 2016-04-10
  • 打赏
  • 举报
回复
引用 2 楼 ch21st 的回复:
你把CharIndex('''',Reverse(Diary_Note), 4)-3 的值select出来,看看有么有负数
值绝大多数都为 -3 只有少量为整数 5 6 13 等
野鼻孔 2016-04-09
  • 打赏
  • 举报
回复
求大神解答呢

27,582

社区成员

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

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