SQL能不能截取字段

微信截图_20211125122504.png

能不能截取表字段的数字和字段iperiod匹配, 这样就不用写12条when判断语句

柿柿 发布于 2021-11-25 12:26
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
axingLv6专家互助
发布于2022-5-20 22:26

因为fb.m1是一个字段,直接select语句不能拼接

可以参考动态sql的写法

https://www.cnblogs.com/hobelee/p/15615733.html

最佳回答
0
CD20160914Lv8专家互助
发布于2021-11-25 13:13

substr?你是什么数据库

  • 柿柿 柿柿(提问者) sql sever
    2021-11-25 13:42 
  • CD20160914 CD20160914 回复 柿柿(提问者) SUBSTRING(fb.m1,4,2) 类似这样。但是没有看到你具体的数据。也不知道你要怎么对比
    2021-11-25 13:55 
  • 柿柿 柿柿(提问者) 回复 CD20160914 不是截取字段fb.m列的数据哦 表fb有字段m1,m2,m3....m12, 分别代表1-12月的数据列,另一个表 iperiod字段有1-12,分别连接对应 表fb的1-12月数据列. 能不能根据 iperiod字段匹配表fb的1-12月数据列,比如 iperiod字段是1的时候,那就把表fb的m1列数据进行连接匹配
    2021-11-26 09:21 
最佳回答
0
鱼丸粗面Lv4见习互助
发布于2021-11-25 13:52(编辑于 2021-11-25 13:55)

'fb.m'+cast (iperiod as varchar(20))

前面也可以加个判断

CASE WHEN iperiod < 13 THEN ('fb.m'+cast (iperiod as varchar(20))) ELSE 0 END 

  • 柿柿 柿柿(提问者) 报错了. 消息 245,级别 16,状态 1,第 2 行 在将 varchar 值 \'fb.m1\' 转换成数据类型 int 时失败。
    2021-11-26 09:17 
  • 鱼丸粗面 鱼丸粗面 回复 柿柿(提问者) 这个报错是你后续代码的问题
    2021-11-27 08:58 
  • 4关注人数
  • 451浏览人数
  • 最后回答于:2022-5-20 22:26
    请选择关闭问题的原因
    确定 取消
    返回顶部