作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
看起来 SQLite,显然作为一个“兼容性特性”,如果没有找到匹配的列,会将双引号标识符解析为字符串文字。
我知道这样做是为了那些编写不正确的 sql 的人,并且为了与这些人创建的遗留项目向后兼容,但是对于我们这些在全新项目上编写正确的 sql 的人来说,调试变得非常困难。
例如,
SELECT * FROM "users" WHERE "usernme" = 'joe';
返回包含 0 行的查询,因为字符串“usernme”不等于字符串“joe”。
这让我挠头想知道为什么即使我知道有一个叫这个名字的用户我也没有得到 joe 的排,直到我煞费苦心地回溯我的代码并意识到我遗漏了一个 a。
是否有任何“严格模式”PRAGMA 或 API 选项来强制执行引号规则并将所有双引号字符串视为标识符,以便在拼写错误时立即通知我?
(还有,请不要告诉我在不需要时不要引用标识符,因为任何此类答案基本上都是在告诉我,为了进行正确的调试,您必须首先编写错误的代码。 )
最佳答案
这是在 SQLite 解析器中硬编码的,无法从外部更改。
关于sqlite - 有没有办法在 sqlite 中禁用宽松的引用规则?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13383763/
我是一名优秀的程序员,十分优秀!