作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
SQL Server 在哪里进行隐式转换?它遵循什么规则?即什么时候将等式运算符的左侧转换为右侧?
Foobarid int not null quantity int not nullquantityTest byte not nulldate varchar(20) not nulldateTest datetime
SELECT id
FROM Foobar
WHERE quantity > '3'
SELECT id
FROM foobar
WHERE quantityTest > 3
Select id
FROM foobar
WHERE date = 20120101
最佳答案
这是您要查找的列表DataType Precedence
在您的示例中:
WHERE quantity > '3'
'3' 被转换为 int,匹配数量
WHERE quantityTest > 3
无需类型转换
WHERE date = 20120101
20120101 作为数字被转换为太大的日期。例如
select cast(20120101 as datetime)
这与
不同WHERE date = '20120101'
可以将日期作为字符串进行转换。
如果你下降CAST and CONVERT reference的三分之一在隐式转换部分,有一个允许的隐式转换表。仅仅因为它被允许并不意味着它会起作用,例如(20120101 -> datetime)。
关于SQL Server 和类型的隐式转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13297547/
我是一名优秀的程序员,十分优秀!