sql语句变量加''和不加有什么区别

比如,select*fromstudentwheresno=100;与select*fromstudentwheresno='100',有什么区别,还有什么情况下要加上单... 比如,select * from student where sno = 100;与select * from student where sno='100',有什么区别,还有什么情况下要加上单引号呢 展开
 我来答
WHITE_WIN
推荐于2018-04-19 · TA获得超过6111个赞
知道大有可为答主
回答量:3759
采纳率:50%
帮助的人:1852万
展开全部
引号中的内容为字符串,可以是数值,也可以是字符
没有引号的数字为表示为数据值(这里是整型数值),字符一般表示为字段名。

尽管这样,系统会自动先进行一致性转换,再进行比较,所以,如果你的SNO是数值型,两个查询都不会报错,也会查询出想要的结果。但如果SNO是字符型,第一个查询就有可能报错,这要看SNO的数据中的字符串是否均为数字。如果有字符型字串,就会报错。

为什么会这样呢?这就要了解系统内部的查询过程:
select * from student where sno = 100 在查询时,比较的过程是,提取每一个SNO,如果是整型或数值型,则不转换,如果是字符型,则要将SNO转换为数值型再比较。这样,如果SNO存有含字符的数据,如'111A',转换时就会报告数据类型错误。
而select * from student where sno='100' ,如果SNO是整型,就会将'100'先转换为整型再与SNO进行比较,如果是字符型,就直接与SNO进行比较。
szm341
2013-04-01 · TA获得超过6725个赞
知道大有可为答主
回答量:5005
采纳率:100%
帮助的人:5071万
展开全部
对于数字来说,不加引号就代表数字,加了代表字符,就犹如abc这种
而对于非数字来说,不加引号就代表对象,如表名、列名、存储过程名等
像你的例子,都能查询到数据,那是因为发生了数据类型的隐式转换,数据类型比较一定会都转换为同一类型才做比较的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cqmeiyan
2013-04-01 · 超过26用户采纳过TA的回答
知道答主
回答量:49
采纳率:0%
帮助的人:30.3万
展开全部
本来是数值型的不加单引号,字符型的需要加单引号,但是如果sno字段是数值型,加不加单引号都可以查询出结果,但如果sno字段是字符型,那么一定要加单引号
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友01a6ff8
2013-04-01
知道答主
回答量:10
采纳率:0%
帮助的人:4.1万
展开全部
加 引号 是字符串,不加是 数字
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友4daca0bd4
2013-04-01 · TA获得超过131个赞
知道答主
回答量:104
采纳率:0%
帮助的人:48.9万
展开全部
int 和 string 的区别 一个是数一个是字符串
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式