![]() |
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
如果基础数据类型为
如果数据类型是
|
![]() |
hello_programmers · Mysql从其他表输出一列 1 年前 |
![]() |
Community wiki · 这个MySQL语句出了什么问题? 1 年前 |
![]() |
Community wiki · 优化从同一表中提取的多列的查询 1 年前 |
![]() |
Popo · Sql查询:返回数据库中不可用的where条件 1 年前 |
|
Hamdan Nuramdani · 对账单中一周内不同表中的数据求和 1 年前 |
|
Kugelfisch · 用php为数据库加密数据 1 年前 |