sql语句变量加''和不加有什么区别
发布网友
发布时间:2024-05-28 13:39
我来回答
共5个回答
热心网友
时间:2024-06-03 18:13
引号中的内容为字符串,可以是数值,也可以是字符
没有引号的数字为表示为数据值(这里是整型数值),字符一般表示为字段名。
尽管这样,系统会自动先进行一致性转换,再进行比较,所以,如果你的SNO是数值型,两个查询都不会报错,也会查询出想要的结果。但如果SNO是字符型,第一个查询就有可能报错,这要看SNO的数据中的字符串是否均为数字。如果有字符型字串,就会报错。
为什么会这样呢?这就要了解系统内部的查询过程:
select * from student where sno = 100 在查询时,比较的过程是,提取每一个SNO,如果是整型或数值型,则不转换,如果是字符型,则要将SNO转换为数值型再比较。这样,如果SNO存有含字符的数据,如'111A',转换时就会报告数据类型错误。
而select * from student where sno='100' ,如果SNO是整型,就会将'100'先转换为整型再与SNO进行比较,如果是字符型,就直接与SNO进行比较。
热心网友
时间:2024-06-03 18:12
本来是数值型的不加单引号,字符型的需要加单引号,但是如果sno字段是数值型,加不加单引号都可以查询出结果,但如果sno字段是字符型,那么一定要加单引号
热心网友
时间:2024-06-03 18:13
int 和 string 的区别 一个是数一个是字符串
热心网友
时间:2024-06-03 18:10
对于数字来说,不加引号就代表数字,加了代表字符,就犹如abc这种
而对于非数字来说,不加引号就代表对象,如表名、列名、存储过程名等
像你的例子,都能查询到数据,那是因为发生了数据类型的隐式转换,数据类型比较一定会都转换为同一类型才做比较的
热心网友
时间:2024-06-03 18:08
加 引号 是字符串,不加是 数字