sql语句(100分)

  • 主题发起人 主题发起人 chenmin25486866
  • 开始时间 开始时间
C

chenmin25486866

Unregistered / Unconfirmed
GUEST, unregistred user!
SELECT pcid,substring(pcid,0,len(pcid)-4)as rr from pc
结果一闪而过出错
"向 substring 函数传递了无效的 length 参数"
但是SELECT pcid,substring(pcid,0,len(pcid)-1)as rr from pc
是ok 的
pcid是字符
不明白
错在那
 
会不会len(pcid)-4是负数,而SubString这个参数不接受负数的参数?
 
to :JamesBond_L
不是负数
(SELECT pcid,substring(pcid,0,len(pcid)-2)as rr from pc)用2都是错的
len(pcid)至少大于7
我运行的有结果
但只是一闪而过就出错
 
也可以不用的我方法
看下我的表
pc: pcid ....
ROHS-C001
ROHS-C002
IQC-C001
IQC-C002
我想要得到的结果是:
   rr...
   ROHS
ROHS
IQC
IQC
就是去掉-的后面部分
能不能帮帮我
 
你的是什么数据库?
我用MSSQL没有出现问题。如果是MSSQL,可以用下面语句:
SELECT pcid,substring(pcid,1,CHARINDEX('-',pcid,1)-1) as rr from pc
 
microsoft server 2000的
 
to:JamesBond_L
我用你的试过
效果一样
一闪而过就出错

不知是不是我的数据库有问题
我的是personnel的server2000
 
你的pcid是什么类型的数据啊
你用查询分析器执行出错吗?
如果是,肯定是你的数据库存在什么问题,但是跟个人版无关系。
 
pcid设为varchar 长度为20
对是出错
跟我的错误是一模一样
我也想数据库存在什么问题?
 
建议你新增一个数据库试试,另外试试把数据库导到其他电脑的SQL服务器试试,如果还是出错。对比一下,如果有一个可以的,证明另外的不行。
总之语句是没有错的。
如果服务不行,那重装看看,还不行就重装系统看看了。。。
试试这个语句select substring('aaaaaaaaa',1,-1),出错信息跟你的一样
 
pcid的长度肯定有等于1的或是空值
 
你再试试:
SELECT pcid,substring(pcid,1,CHARINDEX('-',pcid,1)-1) as rr FROM pc
WHERE CHARINDEX('-',pcid,1)-1>=0
如果没错,说明你的数据有问题。
 
问题找到了!
是我的表里的最后有一行为空值而我没有发现!
谢谢各位了!
to :JamesBond_L
SELECT pcid,substring(pcid,1,CHARINDEX('-',pcid,1)-1) as rr FROM pc
WHERE CHARINDEX('-',pcid,1)-1>=0
用这句用在那里都可以!
 
后退
顶部