SQL Server菜鸟提问,为什么RIGHT函数不起作用?

捷哥1999 2010-06-14 05:51:17
我的数据库有一个字段CatalogID,内容如下:
M0001
C0001
S0001
E0001
插入数据时,要先得到某个分类的ID最大值,例如M0010后,新的M类ID号要从M10001开始,于是我这么写sql:

SELECT RIGHT(CatalogID,4) as newCatalogID FROM demandUnits WHERE CatalogID LIKE '%M';

可是这样不到数据!newCatalogID是空的,为什么呀,SQLSERVER就没有提供类似SubString这样的函数?

我要怎么实现我的功能,就是找到某一类申请,用第一个字母是M\C\S\E来匹配,然后计算出最大值,谢谢各位高手!
...全文
428 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
捷哥1999 2010-06-14
  • 打赏
  • 举报
回复
SELECT max(cast(substring(CatalogID,2,4) as int)) as newCatalogID FROM demandUnits WHERE CatalogID LIKE 'M%';


搞定!多谢dawugui!
dawugui 2010-06-14
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 computerfox 的回复:]
现在解决了第一个问题,就是取到后面的四个数字,然后要怎么算出这些数字的最大值?
sql语句可以吗,还是要程序中处理才可以?
谢谢!
[/Quote]
SELECT max(substring(CatalogID,1,5)) as newCatalogID FROM demandUnits WHERE CatalogID LIKE 'M%';

SELECT max(cast(substring(CatalogID,2,4) as int)) as newCatalogID FROM demandUnits WHERE CatalogID LIKE 'M%';

捷哥1999 2010-06-14
  • 打赏
  • 举报
回复
SELECT RIGHT(CatalogID,4) as newCatalogID FROM demandUnits WHERE CatalogID LIKE 'M%';
我上面敲错字了,是你这么写的,取不到数据!

是真的!
捷哥1999 2010-06-14
  • 打赏
  • 举报
回复
现在解决了第一个问题,就是取到后面的四个数字,然后要怎么算出这些数字的最大值?
sql语句可以吗,还是要程序中处理才可以?
谢谢!
--小F-- 2010-06-14
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 computerfox 的回复:]
搞定了!

SQL code
SELECT substring(CatalogID,1,5) as newCatalogID FROM demandUnits WHERE CatalogID LIKE 'M%';
[/Quote]
GX
--小F-- 2010-06-14
  • 打赏
  • 举报
回复
不会吧
捷哥1999 2010-06-14
  • 打赏
  • 举报
回复
搞定了!
SELECT substring(CatalogID,1,5) as newCatalogID FROM demandUnits WHERE CatalogID LIKE 'M%';
捷哥1999 2010-06-14
  • 打赏
  • 举报
回复
SELECT RIGHT(CatalogID,4) as newCatalogID FROM demandUnits WHERE CatalogID LIKE 'M%';
我上面敲错字了,是你这么写的,取不到数据!
dawugui 2010-06-14
  • 打赏
  • 举报
回复
SELECT RIGHT(CatalogID,4) as newCatalogID FROM demandUnits WHERE CatalogID LIKE 'M%';

34,588

社区成员

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

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