SQL比较数字字符串
这是个愚蠢的问题,但请帮我摆脱这个循环SQL比较数字字符串,sql,database,string,numbers,Sql,Database,String,Numbers,这是个愚蠢的问题,但请帮我摆脱这个循环 SELECT * FROM TABLE_NAME T1 WHERE '10000' > '2' 为什么上面的条件是假的? 我知道我可以把它转换成数字,但我不知道为什么上面的条件是不正确的。非常感谢。条件为false,因为值作为字符串而不是数字进行比较。同样的原因是: WHERE 'A0000' > 'B' 计算结果为false 道德?仅对字符串和日期常量使用单引号。不要对数字使用单引号。条件为false,因为值是作为字符串而不是数字进
SELECT *
FROM TABLE_NAME T1
WHERE '10000' > '2'
为什么上面的条件是假的?
我知道我可以把它转换成数字,但我不知道为什么上面的条件是不正确的。非常感谢。条件为false,因为值作为字符串而不是数字进行比较。同样的原因是:
WHERE 'A0000' > 'B'
计算结果为false
道德?仅对字符串和日期常量使用单引号。不要对数字使用单引号。条件为false,因为值是作为字符串而不是数字进行比较的。同样的原因是:
WHERE 'A0000' > 'B'
计算结果为false
道德?仅对字符串和日期常量使用单引号。不要对数字使用单引号。如果您尝试
WHERE 'A' < 'B'
WHERE 'AAAAAB' > 'AAAAAA'
它返回true,因为B大于A
出于同样的原因,如果您尝试,则返回false
WHERE 'A' < 'B'
WHERE 'AAAAAB' > 'AAAAAA'
它返回true,因为B大于A
出于同样的原因,
其中'10000'>'2'
返回false数字类型和字符串的处理方式不同
(示例)
1<2
为真
'1000'>'2'
为假
比较时,字符类型将更改为数字类型
使用49而不是“1”
和
使用50而不是“2”
结果49>50
=FALSE
如果“1000”大于“1”,则为真
请参阅ASCII代码。数字类型和字符串的处理方式不同 (示例)
1<2
为真
'1000'>'2'
为假
比较时,字符类型将更改为数字类型
使用49而不是“1”
和
使用50而不是“2”
结果49>50
=FALSE
如果“1000”大于“1”,则为真
查看ASCII代码。只需简单思考即可。总之,字符类型具有ascii系统或字符集排序规则上的值 举个例子:
Declare @a char(1)='A',@b char(1)=B,@c char(1)='C'
值为1
b值为2
c值为3
它只是Sql server上基于字符的变量的字母顺序
这意味着如果您比较char、nchar、varchar或nvarchar值,程序首先检查第一个索引的值,然后是第二个索引。。。直到最后 简单想想。总之,字符类型具有ascii系统或字符集排序规则上的值 举个例子:
Declare @a char(1)='A',@b char(1)=B,@c char(1)='C'
值为1
b值为2
c值为3
它只是Sql server上基于字符的变量的字母顺序
这意味着如果您比较char、nchar、varchar或nvarchar值,程序首先检查第一个索引的值,然后是第二个索引。。。直到最后 谢谢你的答复,但我还有一个问题。那么为什么“A0000”<“B”返回TRUE?我想知道他们是如何相互比较的。@PhamNgocVinh。因为比较是按字母顺序的,就像字典里的词条一样。谢谢你的回答,但我还有一个问题。那么为什么“A0000”<“B”返回TRUE?我想知道他们是如何相互比较的。@PhamNgocVinh。因为比较是按字母顺序排列的,就像字典里的词条一样。谢谢你,不过再说一遍。为什么“30000”<“2”是错误的。我认为他们可能会比较第一个字符,然后忽略其余字符???它会比较'3000'的第一个字符(3)和'2'的第一个字符(2),现在3<2返回false,因为2的ASCII码小于3@iamdeowanshi你在这里的评论才是真正的原因;我建议,特别是因为这已经是公认的答案,把它添加到实际答案中。ABC按字母顺序排在DEFG之前;但显然,四位数大于三位数。按照字母顺序,我们先按第一个字母进行比较,而在进行比较之前,我们会在数字上填充前导零。谢谢你,但请再说一遍。为什么“30000”<“2”是错误的。我认为他们可能会比较第一个字符,然后忽略其余字符???它会比较'3000'的第一个字符(3)和'2'的第一个字符(2),现在3<2返回false,因为2的ASCII码小于3@iamdeowanshi你在这里的评论才是真正的原因;我建议,特别是因为这已经是公认的答案,把它添加到实际答案中。ABC按字母顺序排在DEFG之前;但显然,四位数大于三位数。按字母顺序,我们先看第一个字母,而在进行这种比较之前,我们会在数字上填充前导零。