急需一个sql的处理方法

I_am_Z 2015-05-19 02:43:21
现有一个需求,客户的一张表里记录的数据举例如下:

id new_year sum_Val call_id
1 2011 20010 01002
2 201101 300 01002
3 201102 7030 01002
4 2012 20010 01002
5 201201 300 01002
6 201202 7030 01002
7 2014 20010 01002
8 201401 300 01002
9 201402 7030 01002

这个表里的new_year字段混合了两种时间数据,一种是4位长度的年,一种是6位长度的年月的,现在要对该表进行数据统计,要求统计的结果里不能参有4位年的数据。我的问题是,如果在不使用length函数,substr函数等sql特有的函数功能下,如何通过常规的方法对四位年的记录进行筛选???
...全文
109 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
I_am_Z 2015-05-20
  • 打赏
  • 举报
回复
已经测试过,无论是在sql控制台还是crm接口进行测试都可以通过。不需要对字段进行字符串到数值的类型转换,直接 字段>10000即可,数据库这里估计会做隐式转换,不需要我们额外操心了,太棒了。非常感谢大家。封帖。
shoppo0505 2015-05-19
  • 打赏
  • 举报
回复
引用 6 楼 Dersak 的回复:
漂亮,这个办法看上去可行,我试下
你原来的是string,不转成int,你怎么比较?
yooq_csdn 2015-05-19
  • 打赏
  • 举报
回复
4位的年一共也没多少值,枚举一下 not in
I_am_Z 2015-05-19
  • 打赏
  • 举报
回复
漂亮,这个办法看上去可行,我试下
lis_mode 2015-05-19
  • 打赏
  • 举报
回复
觉得把 new_year 转成数值型,隐形转换也可以 ,< 10000的就是四位的! where new_year < 9999
还在加载中灬 2015-05-19
  • 打赏
  • 举报
回复
还好你只有6位 WHERE new_year>9999 这样就把4位的都过滤掉了
I_am_Z 2015-05-19
  • 打赏
  • 举报
回复
引用 1 楼 shoppo0505 的回复:
这种问题不可理喻阿。 一个日期类型存成字符串,操作时候还不能用字符串函数,这都什么要求阿?convert也是SQL预定义函数,能用么? 你的问题的答案是:NNNNNNNNNNNNNNNOOOOOOOOOOOOOOO
其实,之所以不能用,是有特殊原因的。因为这个项目是微软的crm项目,用的是微软crm的内置sdk来处理数据,无法直接使用sql,所以,sql中很多好用的东西都是无法使用的。
I_am_Z 2015-05-19
  • 打赏
  • 举报
回复
呵呵,我也知道不可理喻,但客户是上帝,这谁都知道吧?他们把数据搞得跟屎一样,还得让我们这帮做技术的解决问题,没办法,人在屋檐下嘛。convert肯定是不能用的。所以需要一个超出常规的思路。
shoppo0505 2015-05-19
  • 打赏
  • 举报
回复
这种问题不可理喻阿。 一个日期类型存成字符串,操作时候还不能用字符串函数,这都什么要求阿?convert也是SQL预定义函数,能用么? 你的问题的答案是:NNNNNNNNNNNNNNNOOOOOOOOOOOOOOO

34,594

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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