1
2
我感觉到你的痛苦。我们的数据库中有一列,其中包含公司中众所周知的“订单号”。但它并不总是一个数字,在某些情况下它也可以有其他字符,所以我们把它保存在varchar中。对于SQL Server 2000,这意味着选择“订单号=123456”是错误的。SQL Server有效地将谓词重写为
在某种程度上,我们确实有那些非数字的“数字”是好事,因为至少写得不好的以数字形式传递参数的查询会被捕获,而不仅仅是占用资源。 我认为没有标准。我似乎记得PostgreSQL 8.3删除了数字和文本类型之间的一些默认强制转换,因此这种情况在计划查询时会抛出错误。
哦,还有类似的问题(但没有转换错误),当您有varchar列和一个将所有字符串文本作为nvarchar传递的Java应用程序时。。。突然,您的varchar索引不再被使用,祝您好运找到发生这种情况的地方。当然,你可以告诉Java应用程序以varchar的形式发送字符串,但是现在我们只能在windows-1252中使用字符,因为这就是5-6年前创建的DB,当时它只是一个“权宜之计”,啊哈。 |
2
0
如果基础数据类型为
如果数据类型是
|
Community wiki · SQL语法新手 1 年前 |
KateMak · 是否将多行中的多列与唯一id组合? 1 年前 |
Karuna · SQL中列内的筛选器[重复] 1 年前 |
Irvan Affandy · 为另一个选择选择声明的键 1 年前 |
Community wiki · 这个MySQL语句出了什么问题? 1 年前 |
Community wiki · 优化从同一表中提取的多列的查询 1 年前 |