qq_26007951 2022-07-08 12:01 采纳率: 80%
浏览 18
已结题

报错:Substring在将 varchar 值 '二〇二二' 转换成数据类型 int 时失败。

报错:在将 varchar 值 '二〇二二' 转换成数据类型 int 时失败。
代码如下:

declare @Announmt2 varchar(200)
set @Announmt2='中远海能:二〇二二年半年度业绩预减公告'
select convert(int,Substring(right(@Announmt2,(len(@Announmt2)-len(Substring(@Announmt2,0,CHARINDEX(':',@Announmt2)+1)))),CHARINDEX('年',right(@Announmt2,(len(@Announmt2)-len(Substring(@Announmt2,0,CHARINDEX(':',@Announmt2)+1)))))-4,4))+1

想得到的结果为:2023
请教一下大家专门解决这个问题~

  • 写回答

1条回答 默认 最新

  • foreverliuyin 2022-07-08 15:40
    关注

    注意数据库的collate要为Chinese_PRC_BIN,要不然中文〇替换不了

    declare @Announmt2 varchar(200),@str varchar(200);
    set @Announmt2='中远海能:二〇二二年半年度业绩预减公告';
    set @str=Substring(right(@Announmt2,(len(@Announmt2)-len(Substring(@Announmt2,0,CHARINDEX(':',@Announmt2)+1)))),CHARINDEX('年',right(@Announmt2,(len(@Announmt2)-len(Substring(@Announmt2,0,CHARINDEX(':',@Announmt2)+1)))))-4,4);
    set @str= replace(@str,'〇','0');
    set @str= replace(@str,'一','1');
    set @str= replace(@str,'二','2');
    set @str= replace(@str,'三','3');
    set @str= replace(@str,'四','4');
    set @str= replace(@str,'五','5');
    set @str= replace(@str,'六','6');
    set @str= replace(@str,'七','7');
    set @str= replace(@str,'八','8');
    set @str= replace(@str,'九','9');
    select convert(int,@str)+1
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 7月16日
  • 已采纳回答 7月8日
  • 创建了问题 7月8日

悬赏问题

  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解