select * from ClassArrange where ClassId=2 and TimeString= ' AP1 ' and (IsOdd=True or IsEven=True) and (EndWeek>=1 or BeginWeek<=2)再试下,好象是没有空格。
要求最大128个字符??? 呵呵,没听说过。 是不是你的sql语句有问题??
我试着这么处理! declare @s varchar(1000) set @s='select * from ClassArrange where ClassId=2 and TimeString= ' AP1 ' and (IsOdd=True or IsEven=True)and (EndWeek>=1or BeginWeek<=2)' exec (@s)-------------------->declare @s varchar(1000) set @s='select * from ClassArrange where ClassId=2 and TimeString= '' AP1 '' and (IsOdd=True or IsEven=True)and (EndWeek>=1or BeginWeek<=2)' exec (@s)
服务器: 消息 103,级别 15,状态 7,行 2 以 'select * from ClassArrange where ClassId=2 and TimeString= ' AP1 ' and (IsOdd=True or IsEven=True)and (EndWeek>=1or BeginWeek<=' 开头的 标识符 太长。最大长度为 128。问下知道的朋友:这个“开头的 标识符 太长”是什么意思?怎么修改呢?
是不是'号的问题把它改为 set @s='select * from ClassArrange where ClassId=2 and TimeString= '+char(39)+ AP1+char(39)+ ' and (IsOdd=True or IsEven=True)and (EndWeek>=1or BeginWeek<=2)'
IsOdd和IsEven是什么类型的字段,如果是bit型,就应该是=1而不是=true
不是sql语句长度的问题 是语句的问题
这里少了个空格吧? (EndWeek>=1or BeginWeek<=2) 应该是:(EndWeek>=1 or BeginWeek<=2)
不要用 set @s='select * from ClassArrange where ClassId=2 and TimeString= '' AP1 '' and (IsOdd=True or IsEven=True)and (EndWeek>=1or BeginWeek<=2)' 用 select @s='select * from ClassArrange where ClassId=2 and TimeString= '' AP1 '' and (IsOdd=True or IsEven=True)and (EndWeek>=1or BeginWeek<=2)'
错了,试试这样: declare @s varchar(1000) set @s='select * from ClassArrange where ClassId=2 and TimeString= '' AP1 '' and (IsOdd=True or IsEven=True)and (EndWeek>=1or BeginWeek<=2)' print(@s) exec(@s)
EndWeek>=1 or BeginWeek<=2
EndWeek>=1or 中间少了空格
在Sql里,bool类型的是1和0表示的,不是True和False 另外最后个or前应该有个空格
string s=""; s="select * from "; s=s+" tablename where ....."; s=s+" ...."; 这样多长都能写下了。
呵呵,没听说过。
是不是你的sql语句有问题??
declare @s varchar(1000)
set @s='select * from ClassArrange where ClassId=2 and TimeString= ' AP1 ' and (IsOdd=True or IsEven=True)and (EndWeek>=1or BeginWeek<=2)'
exec (@s)-------------------->declare @s varchar(1000)
set @s='select * from ClassArrange where ClassId=2 and TimeString= '' AP1 '' and (IsOdd=True or IsEven=True)and (EndWeek>=1or BeginWeek<=2)'
exec (@s)
以 'select * from ClassArrange where ClassId=2 and TimeString= ' AP1 ' and (IsOdd=True or IsEven=True)and (EndWeek>=1or BeginWeek<=' 开头的 标识符 太长。最大长度为 128。问下知道的朋友:这个“开头的 标识符 太长”是什么意思?怎么修改呢?
set @s='select * from ClassArrange where ClassId=2 and TimeString= '+char(39)+ AP1+char(39)+ ' and (IsOdd=True or IsEven=True)and (EndWeek>=1or BeginWeek<=2)'
是语句的问题
应该是:(EndWeek>=1 or BeginWeek<=2)
实在不行用Profiler追踪一下。把程序执行后的SQL语句放到Query里运行一下,看看什麼问题!
set @s='select * from ClassArrange where ClassId=2 and TimeString= '' AP1 '' and (IsOdd=True or IsEven=True)and (EndWeek>=1or BeginWeek<=2)'
用
select @s='select * from ClassArrange where ClassId=2 and TimeString= '' AP1 '' and (IsOdd=True or IsEven=True)and (EndWeek>=1or BeginWeek<=2)'
declare @s varchar(1000)
set @s='select * from ClassArrange where ClassId=2 and TimeString= '' AP1 '' and (IsOdd=True or IsEven=True)and (EndWeek>=1or BeginWeek<=2)'
print(@s)
exec(@s)
中间少了空格
另外最后个or前应该有个空格
s="select * from ";
s=s+" tablename where .....";
s=s+" ....";
这样多长都能写下了。
s=" sdfslfsd"(不能超过128字节)