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日

悬赏问题

  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 linux驱动,linux应用,多线程