sql语句变量加''和不加有什么区别
比如,select*fromstudentwheresno=100;与select*fromstudentwheresno='100',有什么区别,还有什么情况下要加上单...
比如,select * from student where sno = 100;与select * from student where sno='100',有什么区别,还有什么情况下要加上单引号呢
展开
5个回答
展开全部
引号中的内容为字符串,可以是数值,也可以是字符
没有引号的数字为表示为数据值(这里是整型数值),字符一般表示为字段名。
尽管这样,系统会自动先进行一致性转换,再进行比较,所以,如果你的SNO是数值型,两个查询都不会报错,也会查询出想要的结果。但如果SNO是字符型,第一个查询就有可能报错,这要看SNO的数据中的字符串是否均为数字。如果有字符型字串,就会报错。
为什么会这样呢?这就要了解系统内部的查询过程:
select * from student where sno = 100 在查询时,比较的过程是,提取每一个SNO,如果是整型或数值型,则不转换,如果是字符型,则要将SNO转换为数值型再比较。这样,如果SNO存有含字符的数据,如'111A',转换时就会报告数据类型错误。
而select * from student where sno='100' ,如果SNO是整型,就会将'100'先转换为整型再与SNO进行比较,如果是字符型,就直接与SNO进行比较。
没有引号的数字为表示为数据值(这里是整型数值),字符一般表示为字段名。
尽管这样,系统会自动先进行一致性转换,再进行比较,所以,如果你的SNO是数值型,两个查询都不会报错,也会查询出想要的结果。但如果SNO是字符型,第一个查询就有可能报错,这要看SNO的数据中的字符串是否均为数字。如果有字符型字串,就会报错。
为什么会这样呢?这就要了解系统内部的查询过程:
select * from student where sno = 100 在查询时,比较的过程是,提取每一个SNO,如果是整型或数值型,则不转换,如果是字符型,则要将SNO转换为数值型再比较。这样,如果SNO存有含字符的数据,如'111A',转换时就会报告数据类型错误。
而select * from student where sno='100' ,如果SNO是整型,就会将'100'先转换为整型再与SNO进行比较,如果是字符型,就直接与SNO进行比较。
展开全部
对于数字来说,不加引号就代表数字,加了代表字符,就犹如abc这种
而对于非数字来说,不加引号就代表对象,如表名、列名、存储过程名等
像你的例子,都能查询到数据,那是因为发生了数据类型的隐式转换,数据类型比较一定会都转换为同一类型才做比较的
而对于非数字来说,不加引号就代表对象,如表名、列名、存储过程名等
像你的例子,都能查询到数据,那是因为发生了数据类型的隐式转换,数据类型比较一定会都转换为同一类型才做比较的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
本来是数值型的不加单引号,字符型的需要加单引号,但是如果sno字段是数值型,加不加单引号都可以查询出结果,但如果sno字段是字符型,那么一定要加单引号
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
加 引号 是字符串,不加是 数字
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int 和 string 的区别 一个是数一个是字符串
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询